双目摄像头同时拍照【基于VS2015+OpenCV3.2】

硬件:单USB传输线双目摄像头       1个

代码如下:

#include
#include
#include
#include

using namespace std;
using namespace cv;

int main(int argc, const char** argv) //程序主函数
{
	VideoCapture cap1,cap2;
	
	//必须降序打开!!
	cap2.open(2);
	cap2.set(CV_CAP_PROP_FRAME_WIDTH, 1920); //设置捕获视频的宽度
	cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 1080); //设置捕获视频的高度

	cap1.open(1); 
	cap1.set(CV_CAP_PROP_FRAME_WIDTH, 1920); //设置捕获视频的宽度
	cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 1080); //设置捕获视频的高度
	

	if (!cap2.isOpened() )             //判断是否成功打开相机
	{
		cout << "摄像头2打开失败!" << endl;
		return -1;
	}
	if (!cap1.isOpened())             //判断是否成功打开相机
	{
		cout << "摄像头1打开失败!" << endl;
		return -1;
	}	

	Mat frame1,frame2, frame_L, frame_R;

	char key;
	char image_left[200];
	char image_right[200];
	int count1 = 0;
	int count2 = 0;

	while (1)
	{
		key = waitKey(50);

		cap2 >> frame2;   //从相机捕获一帧图像
		Mat tmp2;
		resize(frame2, tmp2, Size(640, 480));
		imshow("Video_2", tmp2);

		cap1 >> frame1;   //从相机捕获一帧图像
		Mat tmp1;
		resize(frame1, tmp1, Size(640, 480));
		imshow("Video_1", tmp1);

		if (key == 27) //按下ESC退出
			break;
		if (key == 32) // 按下空格开始拍照图片保存在工程文件下
		{
			sprintf_s(image_left, "L%d.jpg", ++count1);
			imwrite(image_left, frame1);
			imshow("left", tmp1);
			sprintf_s(image_right, "R%d.jpg", ++count2);
			imwrite(image_right, frame2);
			imshow("right", tmp2);
		}
	}

	return 0;
}

运行效果:

双目摄像头同时拍照【基于VS2015+OpenCV3.2】_第1张图片

你可能感兴趣的:(OPENCV,计算机视觉)