现在主要把自己平时用到的opencv功能记录到博客,一方面方便自己有时间来回顾,另一方便提供给大家一个参考。
opencv 读取视频内容,把视频帧每一帧写成图片,存入电脑中。这个步骤是许多数据处理的基础。在写入图片的时候,按照图片数量进行编号和命名,统一名称长度,为了在进行批处理时,不改变图片的顺序。
1 /*输入视频的路径*/ 2 /*输出路径暂时写入外面的临时文件夹,自己可以灵活修改*/ 3 4 void ParseVideo2Images(std::string &strVideo) 5 { 6 cv::VideoCapture videoCap(strVideo.c_str()); 7 8 cv::Mat imgFrame; 9 10 char cImg[20]; 11 int iIndex = 1; 13 /*逐条读取视频数据,写入文件*/ 15 while (videoCap.read(imgFrame)) 16 { 17 sprintf(cImg , "%s%d%s", "0000000" , iIndex++ , ".jpg"); 18 19 std::string strName(cImg); 20 //std::cout << strName << std::endl; 21 22 /*进行名称的截取,截取名称的后10位,变为00001.jpg*/ 24 std::string str = strName.substr(strName.size()-10); 26 /*输出路径设定*/ 27 strName = "..//HD_images//" + str; 29 //std::cout << strName << std::endl; 30 //std::cout << str << std::endl; 32 cv::imwrite(strName,imgFrame); 33 34 } 35 36 }