OpenCV实现读取摄像头做实时边缘检测
下面是使用OpenCV实现读取摄像头并做实时边缘检测(灰度转换、高斯模糊、Canny边缘检测)的事例代码。
//包含头文件
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
//使用命名空间
using namespace cv;
int main()
{
VideoCapture cap(0);//VideoCapture类用法:1.VideoCapture(const string& filename)打开视频文件;2.VideoCapture(int device)打开设备。
if (!cap.isOpened())//检测VideoCapture类是否打开成功
{
return -1;//打开失败返回值
}
//定义变量类
Mat mFrame;
Mat mEdges;
//定义控制变量
bool bStop = false;//控制变量初始化
while (!bStop)//开始
{
cap >> mFrame;
cvtColor(mFrame, mEdges, CV_BGR2GRAY);//图像转换为灰度
GaussianBlur(mEdges, mEdges, Size(7, 7), 1.5, 1.5);//高斯滤波
Canny(mEdges, mEdges, 0, 30, 3);//边缘检测
imshow("camera", mEdges);//显示
if (waitKey(30) >= 0)//检测用户按键
{
bStop = true;//更改控制变量
}
}
return 0;//结束返回
}
