opencv中有一个VideovCapture类,来对视频进行读取和显示,并且可以通过该类来调用电脑摄像头。
VideoCapture类对象读取视频的方法有初始化和赋值两种,
初始化法 : VideoCapture cst("biaoge.mp4");
赋值法 :Videocapture cst;
cst.open("biaoge.mp4");
显示视频的方法是创建一个Mat的对象,用于储存每帧的视频图像,然后一帧一帧的循环显示,经实验每帧等待30ms和正常视频同速。
代码:
while(1)
{
Mat frame;
cst >> frame;
imshow("audlt video", frame);
waitKey(30);
}
调用摄像头用到的类还是和调用视频一样,都要用VideoCapture这个类,但是在声明这个对象的时候要用0;
代码:
VideoCapture dst(0);
或:VideoCapture dst;
dst.open(0);
例如可以通过逐帧的灰度化、均值滤波法、canny图像边缘检测法进行对图像的一系列的处理得到想要的结果。
int main()
{
Mat edge;
VideoCapture dst("biaoge.mp4");
while (1)
{
Mat pic;
dst >> pic;
if (pic.empty())
{
break;
}
cvtColor(pic, edge, 0);
blur(edge, edge, Size(7, 7));
Canny(edge, edge, 0, 30, 0);
imshow("haha", edge);
waitKey(30);
}
return 0;
}