OpenCV–视频处理
先看代码
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
int main(int argc,char** argv) {
cv::namedWindow("Example3",cv::WINDOW_AUTOSIZE);
cv::VideoCapture cap;
cap.open(std::string(argv[1]));
// cap.open("../test.mp4");
cv::Mat frame;
for (;;) {
cap >> frame;
if (frame.empty())
break;
cv::imshow("Example3",frame);
if (cv::waitKey(33) >= 0) break;
}
return 0;
}
在终端中输入
cd name.exe文件所在目录
./name.exe 要打开的视频路径
或者把cap.open(std::string(argv[1]));
这一句换成cap.open("视频路径");
然后点击运行,相对路径的话是相对.exe文件或所编写代码文件
现象
打开你所输入的路径的视频
代码讲解
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
包含必要的头文件
int main(int argc,char** argv) {
argc 和 argv,它们通常用于命令行参数,如在终端输入的第二行,只有一个参数 要打开的视频路径,那么argc就为1,argv为你输入的参数,在程序中可以调用
cv::namedWindow("Example3",cv::WINDOW_AUTOSIZE);
cv::VideoCapture cap;
cap.open(std::string(argv[1]));
// cap.open("../test.mp4");
cv::Mat frame;
创建一个窗口,一个视频数据并接收要传入的视频,一个图像帧来接收视频的每帧的图像
for (;;) {
cap >> frame;
if (frame.empty())
break;
cv::imshow("Example3",frame);
if (cv::waitKey(33) >= 0) break;
}
“>>” 表示将cap的数据写入到frame中,每经过下一次循环cap会跳转到下一帧,若为空则表示视频结束,否则延时33ms播放下一个画面
延时过程中若有按键输入,则直接退出