双目摄像头的简单使用

双目摄像头是由两个摄像头组成的组件,可用做距离测量和视觉检测。两个摄像头安装在同一平面上。两摄像头之间的距离叫做基线距离。双目摄像头长这样:

双目摄像头的简单使用_第1张图片

 淘宝上有很便宜的一两百的,但是效果一般不太好。玩一玩是可以的。

将双目摄像头插在电脑上,用python简单几行驱动一下可以显示图像:

camera = cv2.VideoCapture(0)


camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

双目摄像头的简单使用_第2张图片

 拍出来好像是一个广角的视野,那么你买的是鱼眼的摄像头,那么你需要进行校正才能有一个较好的效果。简单校正之后的效果如下:

双目摄像头的简单使用_第3张图片

 那么如何进行校正呢:校正之前要做的一个工作是相机的标定,相机标定是通过拍摄很多组棋盘的照片,通过matlab的相机标定工具箱,或者是自己用python写标定程序,目的是为了得到相机的内参和外参。相机的内外参数通过是通过一系列的坐标转换得来的,具体的公式想了解的可以找一下相关的论文。opencv图像处理库有专门的校正函数即通得到内外参数后.可以通过undistort()函数一次性完成;也可以通过initUndistortRectifyMap()和remap()的组合来处理。

摄像头

参数

结果

左摄像头

焦距

[ 327.1742, 0.1042, 332.9284]

主点

(342.7561,  238.7232)

畸变参数

[-0.4136, 0.1504, 0.0, -0.0043, -0.0020]

右摄像头

焦距

[ 342.5101, -0.2264, 309.3217]

主点

(327.1395,  252.5317)

畸变参数

[-0.4038, 0.1240, 0.0, 0.0030,0.0044]

双目摄像头

旋转向量

[0.9988, 0.0022, -0.0490]

平移向量

[-119.1594, 1.6745, 9.6760]

相机的内外参数分别长这样,这是我测量出来的。到函数里面使用就行了

接下来就能进行距离测量双目摄像头的简单使用_第4张图片距离测量使用的是一种简单的三角形原理。测量的代码首先使用stereo.compute(imgL, imgR)函数,输入左右视图,输出深度矩阵。使用cv2.Normalize()按照深度矩阵生产深度图。最后cv2.reprojectImageTo3D()将深度图扩展至三维空间中,返回的3d对象包含着3d点的rgb值和三维空间位置点两个数组。我们取出三维空间的数组,即目标点的空间坐标。

双目摄像头的简单使用_第5张图片

 我们知道,要提高误差。对硬件部分的要求是十分高的。工业摄像头测量系统需要的摄像头要求有:高帧率、多接口、感光清晰、分辨率高、可编程控制、支持多系统开发。因此,选择Gauss3系列USB3.0工业相机模组作为本设计的视觉获取模块。此外,作为工业场景使用的摄像头。在温湿度、相机尺寸和相机重量方面应该要有一定的要求。下图是本摄像头的工业参数。通过比较,符合工业使用场景,能作为本设计的摄像头模组。

 

你可能感兴趣的:(1024程序员节,python,opencv)