videocapture顾名思义视频捕捉,主要是从视频文件、摄像头或网络摄像头获取视频流数据,并将其作为一系列帧进行处理。
我们这里主要实现了获取项目文件夹下的1.mp4视频文件,然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main() {
VideoCapture capture("1.mp4");
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("读取视频", edges);
waitKey(30);
}
return 0;
}
下面就是显示的视频流,在一个循环里,一次只拿到一帧数据处理
对了,我尝试了注释waitKey函数,发现注释其后,视频无法播放。
waitKey函数的作用不仅是等待指定的时间,还可以处理键盘输入事件,确保图像窗口能够正确显示并保持打开状态。因此,保留waitKey函数对于视频播放和显示是非常重要的。
VideoCapture capture(0);这个里面也可以把视频路径改为0,会调用笔记本的摄像头。