TA的每日心情 | 奋斗 2022-4-7 16:37 |
---|
签到天数: 736 天 连续签到: 1 天 [LV.9]以坛为家II
|
本帖最后由 mikeliujia 于 2018-4-17 23:46 编辑
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。在这里我们通过BPI M2 Zero简单调用opencv.
1、安装OpenCV库:
apt-get install guvcview
sudo apt-get install libcv-dev
2、编写一个打开摄像头的程序,vim xiaorun.cpp
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0); //打开摄像头
// 如果要打开本地视频采用 VideoCapture cap("***.avi");
if(!cap.isOpened()) return -1; //检测一下摄像头是否打开
Mat frame;
while(1){
cap>>frame; //读取当前帧
// 此处可添加图像处理算法,对图像进行处理,当然了,我们可以不做任何操作,只打开一下摄像头
imshow("BPI M2 Zero OpenCV CAM", frame); //显示一下
if(waitKey(20) >=0) break; // 等待按键,跳出循环
}
return 0;
}
3、使用LXTerminal执行
4、修改代码,实现边缘检测,vim xiaorun.cpp
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0); //打开摄像头
// 如果要打开本地视频采用 VideoCapture cap("***.avi");
if(!cap.isOpened()) return -1; //检测一下摄像头是否打开
Mat frame,edges;
while(1){
cap>>frame; //读取当前帧
cvtColor(frame,edges,CV_BGR2GRAY);//把图像转换为灰度图像
blur(edges,edges,Size(7,7));//模糊降噪
Canny(edges,edges,3,9,3);//Canny 边缘检测
imshow("BPI M2 Zero OpenCV Canny", edges); //显示一下
if(waitKey(20) >=0) break; // 等待按键,跳出循环
}
return 0;
}
保存退出后,
- g++ -o xiaoruncanny ./xiaorun.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
复制代码 使用LXTerminal执行
噪声信号还是挺多的,但是基本的边缘检测还是能够很清晰的完成。
|
|