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;//结束返回
}
经验分享 程序员 微信小程序 职场和发展