先读取视频,再将视频的每一帧图片灰度化,然后进行模糊降噪,再然后进行Canny边缘检测,输出每一帧画面。
/**
*Copyright (c) 2018 Young Fan.All Right Reserved.
*Filename: 7 对视频进行Canny边缘检测
*Author: Young Fan
*Date: 2018.4.1
*OpenCV version: 3.4.1
*IDE: Visual Studio 2017
*Description: 对视频进行Canny边缘检测
*/
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
//读视频
VideoCapture capture("1.avi");
//循环显示每一帧
int n = 0;
while (n < 10000000000)
{
n++;
Mat frame;
//读入每一帧图像
capture >> frame;
imshow("原视频",frame);
//将原视频转换为灰度图像
Mat edge;
cvtColor(frame,edge,COLOR_BGR2GRAY);//RGB彩图转为灰度图
//使用3x3内核来降噪(2x3+1 = 7)
blur(edge,edge,Size(7,7));//进行模糊降噪
//进行Canny边缘检测
Canny(edge,edge,0,30,3);
imshow("被Canny边缘检测后的视频",edge);//显示处理后的当前帧
waitKey(30);
cout << "边缘检测第"<< n << "帧画面..."<< endl;
}
return 0;
}