opencv:双目视觉 ——实现详细教程(matlabR2015b+opencv-python)

原本这个文章是打算转载别人的,在经历过各个教程都失败后(1.要不然是前后不对应,估计是随便复制一下,2.要么是讲解很不清楚,没有讲解怎么使用参数),决定自己写一下。记录一下,尽量会非常详细

0.前期准备

  • 准备棋盘格
    类似于这种:下载地址在这里:https://pan.baidu.com/s/1qYu0IkgbffuoCgANiQ5-Dw
    必须实际打印出来哦,你用别人的标定图片怎么可能反映你自己的摄像头特征呢。在这里插入图片描述
  • 准备标定图片
    利用opencv读取你自己的摄像头,按下s键进行截图,分别保存在left文件夹和right文件夹
有可能需要修改的地方: 1.folder 改为自己的路径 2.我这里的双目摄像头图像是在一个框里显示的,所以只需要capture一次,如果你的摄像头是分开的,则要两次capture 3.分辨率设置的时候,要根据自己的摄像机分辨率参数来设置,这很重要!!!
import cv2
import time

AUTO = True  # 自动拍照,或手动按s键拍照
INTERVAL = 2 # 自动拍照间隔
camera = cv2.VideoCapture(0)#也许你可能要capture两次
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 2560)#设置分辨率
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 960)#
utc = time.time()
folder = "E:/pythonlearning/opencv/screenshot/" # 拍照文件目录

def shot( frame):
    global counter
    leftpath = folder +"left/"+"left_" + str(counter) + ".jpg"
    rightpath=folder + "right/"+ "right_" + str(counter) + ".jpg"
    leftframe=frame[0:960,0:1280]#这里是为了将合在一个窗口显示的图像分为左右摄像头
    rightframe=frame[0:960,1280:2560]
    cv2.imwrite(leftpath, leftframe)
    cv2.imwrite(rightpath, rightframe)
    print("snapshot saved into: " + leftpath)
    print("snapshot saved into: " + rightpath)

while True:
    ret, frame = camera.read()

    cv2.imshow("original", frame)

    now = time.time()
    key = cv2.waitKey(1)
    if key == ord("q"):
        break
    elif key == ord("s"):
        shot( frame)
        counter += 1

camera.release()
cv2.destroyWindow("original")

这是我获得的标定图片
在这里插入图片描述

1.Matlab标定

matlab版本:R2015b
获取图片成功后,则要使用这些图片了
1.打开app->找到stereo calibration camera
在这里插入图片描述
2.选定三个复选框后,add images
在这里插入图片描述
切记此处的 25是系统默认的,实际的是根据自己打印出来的方格宽度决定的。
在这里插入图片描述
添加图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面将会使用这些参数

2.opencv配置参数

  • 点进去stereoParams.CameraParameters1.IntrinsicMatrix在这里插入图片描述

left_camera_matrix = np.array([[837.046533944197,	0.,	0.],
                               [-1.38537933662732,	838.772077702795
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值