近段时间需要采集图片进行网络训练,所以就开车出去采集了几段视频,然后运用opencv截取视频中的任意帧,并保存为图片。因为整段视频会有一些问题,所以不想随机截取,我使用人工按键来进行判断是否需要采集,这样就可以省下啦后面的图片挑选工作。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>
using namespace std;
using namespace cv;
int main()
{
// 视频绝对路径
VideoCapture capture("/home/snow/Videos/video/12.5.1.mp4");
Mat frame;
Mat dstimg;
int num;
cout<<"start opening:"<<endl;
int i = 1;
//std::string image_name;
char image_name[20]; // 用于存储图片名
while (capture.isOpened())
{
capture >> frame;
if (frame.empty())
break; //判断视频是否读取结束
// 修改图片的尺寸,因为我想要的图片是1280X720
resize(frame,dstimg,cv::Size(1280,720),cv::INTER_LINEAR);
frame.release();
imshow("show", dstimg);
num = waitKey(10); // 显示视频每一帧,显示速度可以调整
if