这一篇就是集我们学到的东西大成者,没有看过这三篇文章的请点击下面的链接看这三篇文章
双目视觉标定-2.单目视觉标定opencv代码实战-优快云博客
双目视觉标定-3.Stereo Calibration双目视觉标定理论-优快云博客
目录
1. 采集棋盘格图片
首先同时打开左右摄像头,然后按s键采取两侧图片信息,并且保存到相应的文件夹,保持摄像机不动,棋盘格可以朝向各种方向和角度,采集至少五组照片
calibration_images.py
# Take the images of chessboard and save these images
import cv2
cap = cv2.VideoCapture(0)
cap2 = cv2.VideoCapture(2)
num = 0
while cap.isOpened():
succes1, img = cap.read()
succes2, img2 = cap2.read()
k = cv2.waitKey(5)
if k == 27:
break
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('images/stereoLeft/imageL' + str(num) + '.png', img)
cv2.imwrite('images/stereoright/imageR' + str(num) + '.png', img2)
print("images saved!")
num += 1
cv2.imshow('Img 1',img)
cv2.imshow('Img 2',img2)
2. 立体相机标定
这部分跟以前的单目视觉标定是一样的,我们需要对左右两侧相机分别进行相机标定,然后获取左右两侧相机的内参矩阵和畸变矩阵
Step1:创建棋盘格真实世界点与像平面点进行对应
world scaling 你可以换成你使用的chessboard每一格的真实大小,要注意之后的单位都和你使用的单位一致了, 我这里为了简单就只保留了1
stereo_calibration.py
import numpy as np
import cv2 as cv
import glob
###