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.运行效果
左边摄像头对于左边,能看得更远,右边摄像头,对于右边,能看得更远

该代码示例展示了如何在Windows10上,利用VisualStudio2015和OpenCV3系列库,打开并处理双目摄像头的视频流。程序首先捕获一帧图像,然后调整尺寸并分别截取左右两幅图像进行显示。通过调整,左侧摄像头可以看到更远处,右侧摄像头则对右侧有更广的视野。
1717

被折叠的 条评论
为什么被折叠?



