在做图像标定的时候有一件事情很烦,就是我需要连续拍多张图片,我们当然可以通过软件直接截取,但是原谅作为小白的我当时并没有找到这个软件(坑爹啊,后来别人给我了)。
于是就只能找找能不能通过程序去保存的。我的做法是,希望按一次 'c', 就能够保存一张图片,并且希望图片是按照1.jpg、2、jpg、3、jpf ......这样的保存的,这样在我标定的时候就不用慢慢的改啦
真的是找了好久,后来才知道,原来还有sprintf这个函数(尴尬,不过真的觉得好方便)
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
int d=8;
char ad[300]={0};
char name;
//从电脑摄像头读入
VideoCapture capture(0);
Mat edges;
waitKey(2000);
//循环显示每一帧
Mat frame;
while(1)
{
capture>>frame;//读取当前帧
imshow("读取视频",frame);
int k=waitKey(30);//延时30ms
if(k=='e'||cvGetWindowHandle("读取视频")==nullptr)
break;
else if(k=='c')
{
sprintf(ad, "C:\\Users\\fan\\Desktop\\%d.jpg", ++d);
imwrite(ad, frame );
cout<<"get "<<d<<" picture "<<endl;
}
}
return 0;
}
找好视野,多次按下'c' 键,就可以连续保存多张图片啦。