一.运行环境
opencv2、windows、vs
二.图像获取、分割、保存
参考博客opencv打开双目摄像头、图像切割保存_scutqq的博客-CSDN博客_双目图像分割#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace std;using namespace cv;void main(...https://blog.csdn.net/sinat_34156619/article/details/79315938
双目相机图片
代码根据参考博客和自己硬件以及需求经行更改
#include#include #include #include using namespace std; using namespace cv; void main() { Mat input_image; VideoCapture cam(1); Rect left_rect(0, 0, 1280, 720); //创建一个Rect框,属于cv中的类,四个参数代表x,y,width,height Rect right_rect(1280, 0, 1280, 720); Mat image_left, image_right; string left_road; string right_road; int num = 0; if (!cam.isOpened()) exit(0); cam.set(CV_CAP_PROP_FRAME_WIDTH, 2560); cam.set(CV_CAP_PROP_FRAME_HEIGHT, 960); while (true) { cam >> input_image; image_left = Mat(input_image, left_rect).clone(); image_right = Mat(input_image, right_rect).clone(); imshow("input image1", image_left); imshow("input image2", image_right); char q=waitKey(30); if (q == 27) { //按esc退出 break; } if (q == 32) //按空格保存 { num++; cout << num; left_road = "F:\graph\left\" + to_string(num) + ".png"; right_road = "F:\graph\right\"+to_string(num) + ".png"; imwrite(left_road, image_left); imwrite(right_road, image_right); } } cam.release(); }
tips:如果出现调用双目摄像头只出现一个图像时,大概率是图像分辨率没有设置对
VideoCapture cap(1); //笔记本上一般0是自带的摄像头,1是外插摄像头
cap.set(CAP_PROP_FRAME_WIDTH,2560);
cap.set(CAP_PROP_FRAME_HEIGHT,720);
三.标定
MATLAB标定
参考博文(一)手把手教双目相机标定(超详细,附代码)_THU-弘毅的博客-CSDN博客_双目相机标定
matlab双目标定(详细过程)_西海岸看日出的博客-CSDN博客_matlab双目相机标定
输入stereoCameraCalibrator,打开工作界面
点击add images,添加左右相机照片,并且修改标定板网格的尺寸,点击确定;
点击calibrate,结果如下
点击export camera parameters,回到主界面可以参看标定结果
TranslationOfCamera2:相机2相对于相机1的偏移矩阵,可以直接使用。
RotationOfCamera2:相机2相对于相机1的旋转矩阵,需要转置之后才能使用。
CameraParameters1与CameraParameters2为左右摄像头的单独标定参数。CameraParameters1与CameraParameters2中包含如下文件:
IntrinsicMatrix存放的是摄像头的内参,只与摄像机的内部结构有关,需要先转置再使用。
RadialDistortion:径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由K1,K2,K3确定。
TangentialDistortion:切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数P1,P2确定。
未完待续....



