用OPENCV编写单帧图片截取程序

  • 格式:rtf
  • 大小:41.27 KB
  • 文档页数:2

写这个程序的时候opencv的版本是2.4.11的,由于要采集图像,而且要一帧一帧地截取,
用opencv能很好地实现这个功能,于是自己动手编写了这么一个程序。
程序执行的时候会在控制台里显示写入每一帧时所消耗的时间,本人用的是Intel i3的处理
器,写入每帧的时候显示大概90-100ms,大概就是每秒能够截取10到12张图片吧。所以程
序对处理器的要求较高。最好是做成能够独立运行的程序,在台式机上运行。
关于如何配置高版本的opencv 静态库,网络上给的答案五花八门,本人也会抽空给出如何
配置高版本的静态库。
下面附上源码。

#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <ctype.h>
#include <time.h>

using namespace cv;
using namespace std;

char filename[60];

int main(int argc,char** argv)
{
VideoCapture capture(0);
if(!capture.isOpened())
exit(0);
Mat frame;
char c;
char mkdir[20];
time_t t = time(0);
sprintf(mkdir,"mkdir %d",t);
system(mkdir);
sprintf(filename,"%d\\000000000.png",t);
size_t len = strlen(filename);

namedWindow("cam");
while(1)
{
double exec_time = (double)getTickCount();
capture >> frame;
if(!frame.data)
break;
imshow("cam",frame);
c = waitKey(10);
if(c == 27)
break;

if(!imwrite(filename,frame))
{
printf("can not write file correctly.\n");
exit(-1);
}

filename[len-5]++;
for(size_t t = len -5;t>len -11;t--)
{
if(filename[t]>'9')