OpenCV调用摄像机实现拍照功能
在博客里记录一下从开题开始所学的知识,就当是记笔记了,以便以后随时复习。
C++程序,用OpenCV调用摄像机实现拍照功能。这里我用的是两个相同的单目摄像机,组装成一个双目摄像机模组。因此在调取摄像头和拍照时需要分别创建两个摄像机对象。
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
char imageleft[200];
char imageright[200];
int count1 = 0;
int count2 = 0;
//初始化摄像机,系统自带的摄像机编号是0,我所用的USB摄像机编号为1和2
VideoCapture camera2(2);
camera2.set(CAP_PROP_FRAME_WIDTH, 960);
camera2.set(CAP_PROP_FRAME_HEIGHT, 720);
VideoCapture camera1(1);
camera1.set(CAP_PROP_FRAME_WIDTH, 960);
camera1.set(CAP_PROP_FRAME_HEIGHT, 720);
//打开失败应该释放通道
if (!camera2.isOpened()) {
cout << "摄像头2打开失败" << endl;
return 1;
}
if (!camera1.isOpened()) {
cout << "摄像头1打开失败" << endl;
return 1;
}
while (true) {
Mat3b frame2;
camera2 >> frame2;
Mat3b frame1;
camera1 >> frame1;
imshow("Video2", frame2);
imshow("Video1", frame1);
int c = waitKey(20);
if (27 == char(c))
break;
if (cvWaitKey(20) == 32) // 按下空格开始拍照
{
//保存的图像在工程文件中
sprintf_s(imageleft, "left%d.jpg", ++count1);
imwrite(imageleft, frame2);
sprintf_s(imageright, "right%d.jpg", ++count2);
imwrite(imageright, frame1);
}
}
system("pause");
return 0;
}