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);因为通过VideoCapture类对视频进行显示是逐帧处理的,所以可以通过这个对视频进行类似于图片的处理。
例如可以通过逐帧的灰度化、均值滤波法、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; }