上一个文档,已经学习了OpenCV处理图像的简单例程,现在再来学习几个视频操作的简单例程。同样的,后续还会详细学习的,今天只是了解啊。
第一个程序:读取并播放视频
说在前头:视频处理类用VideoCapture,我们有两种使用方法
一种:先实例化再初始化
VideoCapture capture;
capture.open(d:\\ss.avi);
二种:实例化的同时进行初始化
VideoCapture capture("d:\\ss.avi");
好了,我们来看程序吧:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture("d:\\ss.avi"); //实例化同时初始化
while (1)
{
Mat frame;
capture >> frame; //一帧一帧地读取
imshow("读取视频", frame); //一帧一帧地显示
waitKey(30);
}
return 0;
}
第二个程序:调用摄像头采集图像
同样是用VideoCapture函数,只是参数设为0,我们来看程序吧
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture(0);//参数设为0 其余跟上一个程序一样一样的
while (1)
{
Mat frame;
capture >> frame;
imshow("读取摄像头", frame);
waitKey(30);
}
return 0;
}
第三个程序:用摄像头采集视频并用Canny进行边缘检测
用到的是上一个文档中的转灰度图和去噪还有边缘检测,我们来看程序吧。
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture capture(0);//先取摄像头
Mat edges;
while (1)
{
Mat frame;
capture >> frame;
cvtColor(frame, edges, COLOR_BGR2GRAY);//转灰度
blur(edges, edges, Size(7, 7));//去噪
Canny(edges, edges, 0, 30, 3);//边缘检测
imshow("摄像头的视频进行Canny", edges);//显示结果
if (waitKey(30) >= 0) break;
}
return 0;
}