1.介绍
双目摄像头同时获取两幅图片到一个Mat里保存,然后截取出左右两幅图片
2.代码
代码是在win10平台运行,编程软件为vs2015,opencv库为3系列
#include<iostream>
#include<string>
#include<sstream>
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/opencv.hpp>
#include<stdio.h>
using namespace std;
using namespace cv;
int main()
{
VideoCapture cap; //定义摄像头对象
cap.open(1); //笔记本设置为1(因为笔记本一般自带摄像头),台式机设置为0
cap.set(CV_CAP_PROP_FRAME_WIDTH, 2560); //图片宽度 2560 2560 1280 640
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 960); //图片高度 960 720 480 240
if (!cap.isOpened()) //判断是否成功打开相机
{
cout << "摄像头打开失败!" << endl;
return -1;
}
Mat frame, frame_L, frame_R;
cap >> frame; //从相机捕获一帧图像
double fScale = 0.5; //定义缩放系数,方便显示
Size dsize = Size(frame.cols*fScale, frame.rows*fScale);
Mat imagedst = Mat(dsize, CV_32S);
resize(frame, imagedst, dsize);
char key;
while (1)
{
cap >> frame; //同时获得左右图片
resize(frame, imagedst, dsize);
frame_L = imagedst(Rect(0, 0, 640, 480)); //截取左图片
namedWindow("Video_L", 1);
imshow("Video_L", frame_L); //显示左图片
frame_R = imagedst(Rect(640, 0, 640, 480)); //截取右图片
namedWindow("Video_R", 2);
imshow("Video_R", frame_R);
key = waitKey(10); //显示间隔
}
return 0;
}
3.运行效果
左边摄像头对于左边,能看得更远,右边摄像头,对于右边,能看得更远