C++_Opencv 4.0+_读取_双目摄像头

本文详细介绍了一种在Windows 11环境下,利用OpenCV 4.0操作HBV-1780-2S2.0双目摄像头的方法,包括设置分辨率获取双镜头图像,以及如何分离左右摄像头图像并进行预处理。通过代码示例展示了图像分离和显示的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章介绍一种双目摄像头左右镜头图像读取方法

摄像头型号:HBV-1780-2 S2.0

环境:Win11、VS2019、Opencv4.0+

摄像头购买于淘宝商家,商家提供了图像采集示例程序。程序中给出了几种分辨率,不同的分辨率会影响摄像头的图像是单镜头图像还是双镜头组合图像。我们选择宽度分辨率较大的模式即可看到两颗摄像头共同返回的图像(记住可以同时看见两颗摄像头返回图像的分辨率大小,后续在设置摄像头参数时将会使用到)。

实现功能:

分离左右摄像头图像,并自由返回。

以下为功能实现代码:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/video.hpp>

using namespace cv;
using namespace std;

VideoCapture cap(1);



/*****************************************/
//camera preprocessing
//    return :
//        none 
void Pre_Camera() {
	cap.set(CAP_PROP_FRAME_WIDTH, 1280);    //Set camera width dpi
	cap.set(CAP_PROP_FRAME_HEIGHT, 360);    //Set camera height dpi
	cap.set(CAP_PROP_FPS, 30);              //set camera fps
}



/*****************************************/
//image preprocessing
//    interface :
//        (Mat) left lens image : Pic_Left_return()
//        (Mat) right lens image : Pic_Right_return()
class pre {
private:
	Mat Pic_All;                //original bi-camera image
	Mat Pic_Left;               //left devide
	Mat Pic_Right;              //right devide
public:
	pre(){}
	void pic_devide(Mat img);   //devide into two
	Mat Pic_Left_return();		//return left part image
	Mat Pic_Right_return();     //return right part image
	void show();                //show all parts of image
	~pre(){}
}Pre_process;

//devide into two
void pre::pic_devide(Mat img) {
	Pic_All = img.clone();
	Pic_Left = img(Rect(Point(0, 0), Point(img.cols / 2, img.rows))).clone();
	Pic_Right = img(Rect(Point(img.cols / 2, 0), Point(img.cols, img.rows))).clone();
}
//return left part image
Mat pre::Pic_Left_return() {
	return Pic_Left;
}
//return right part image
Mat pre::Pic_Right_return() {
	return Pic_Right;
}
//show all parts of image
void pre::show() {
	imshow("Left", Pic_Left);
	imshow("Right", Pic_Right);
	imshow("All", Pic_All);
}



int main() {
	Pre_Camera();
	Mat zong;

	while (1) {
		cap >> zong;
		Pre_process.pic_devide(zong);
		Pre_process.show();
		if (waitKey(1) > 0) break;
	}

	cap.release();
	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StobestaR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值