1 按 “C/ c”后图片会保存在根目录的pic文件夹中,首先好新建 pic文件夹。
#include <opencv2\opencv.hpp>
#include <iostream>
#include <Windows.h>
#include<string>
#include<vector>
using namespace cv;
using namespace std;
#define typecam//2个相机驱动
//int main17060500()
int main()
{
Mat view0;
#ifndef typecam
VideoCapture m_InputCapture(0);
Mat view0;
m_InputCapture.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
m_InputCapture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
while (!m_InputCapture.isOpened())
{
Sleep(2);
cout << "cannot open the camera!" << endl;
}
#else
VideoCapture m_InputCapturel(0);
VideoCapture m_InputCapturer(2);
m_InputCapturel.set(CV_CAP_PROP_FRAME_WIDTH, 640);
m_InputCapturel.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
m_InputCapturer.set(CV_CAP_PROP_FRAME_WIDTH, 640);
m_InputCapturer.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
while (!m_InputCapturel.isOpened())
{
Sleep(2);
cout << "cannot open the cameral!" << endl;
}
while (!m_InputCapturer.isOpened())
{
Sleep(2);
cout << "cannot open the camerar!" << endl;
}
#endif // !typecam
printf("按“C”键截取当前帧并保存为标定图片...\n按“Q”键退出截取帧过程...\n\n");
int number_image = 1;
char *str1;
str1 = ".jpg";
char filenamel[20] = "";
char filenamer[20] = "";
for (;;)
{
Mat mLeftView, mRightView;
#ifndef typecam
m_InputCapture >> view0;
mLeftView = view0(cv::Rect(0, 0, 640, 480));
mRightView = view0(cv::Rect(640, 0, 640, 480));
#else
m_InputCapturel >> mLeftView;
m_InputCapturer >> mRightView;
#endif // !typecam
imshow("cameraR", mRightView);
imshow("cameraL", mLeftView);
char mod = (char)waitKey(100);
if (mod == 'c' || mod == 'C')
{
sprintf_s(filenamel, "pic/left%d.jpg", number_image);
imwrite(filenamel, mLeftView);
sprintf_s(filenamer, "pic/right%d.jpg", number_image);
imwrite(filenamer, mRightView);
cout << "成功获取当前帧,并以文件名" << filenamel << "保存...\n\n";
cout << "成功获取当前帧,并以文件名" << filenamer << "保存...\n\n";
printf("按“C”键截取当前帧并保存为标定图片...\n按“Q”键退出截取帧过程...\n\n");
number_image++;
}
else if (mod == 'q' || mod == 'Q')
{
printf("截取图像帧过程完成...\n\n");
cout << "共成功截取" << --number_image << "帧图像!!\n\n";
break;
}
}
return 0;
}