【双目相机】基于matlab的参数标定1-使用双目相机拍照

1.前期准备

1、安装好python3,可以在anaconda中安装python3。
2、一个合适的双目摄像头。
3、一台可以运行Matlab的电脑。
4、一张棋盘图(可A4打印,若效果不佳,则可A3打印)。
棋盘图如下图所示:需要测量小方框的边长(一般单位为毫米:mm)。
标定板

2.使用双目摄像头(左+右)拍摄棋盘图

1、左、右摄像头图像中必须包含单独的完整的棋盘图。
2、可适当前后、左右、上下翻转棋盘图,在符合上述条件1的情况下。
3、拍摄左右双目的照片40~50张比较合适。因为可能会有不满足条件的照片。

2.1.python拍照代码

import cv2
import sys
#引入库

cap = cv2.VideoCapture(1) #读取笔记本内置摄像头或者0号摄像头


i = 0
while True:
    ret, frame = cap.read()
    
    if (ret):
        cv2.namedWindow("Video01",0)   #创建一个名为Video01的窗口,0表示窗口大小可调
        #cv2.resizeWindow("Video01",1280,720) ##创建一个名为Video01的窗口,设置窗口大小为 1920 * 1080 与上一个设置的 0 有冲突
        cv2.imshow("Video01", frame)

        #等待按键按下
        c = cv2.waitKey(1) & 0xff

        #r若按下w则保存一张照片
        if c ==ord("w"):
            cv2.imwrite("./val_001/%d.bmp" %i, frame) #自己设置拍摄的照片的存储位置
            print("Save images %d succeed!" %i)
            i+=1

        #若按下Q键,则退出循环
        if c == ord("q"):
            break
    
#随时准备按q退出
cap.release()
#关掉所有窗口
cv2.destroyAllWindows()

注意:
1、运行take_photo.py前,注意设置左右照片的存储位置。
2、运行take_photo.py后,按下键盘上的“W”键拍摄一张照片。当拍摄的照片数量足够时,按下“Q”键退出程序运行。
3、程序退出后,打开存储照片的文件夹查看照片是否合适。

2.2.python分割图片代码

import numpy as np
import cv2

#img1 = cv2.imread(r"/Users/inbc/Desktop/zuo/Left1.bmp")
#img2 = cv2.imread(r"/Users/inbc/Desktop/you/Right1.bmp")
for i in range(0,7) :
    #imgT = cv2.imdecode(np.fromfile('./images/%d.bmp'  %i ,dtype=np.uint8), -1)
    imgT = cv2.imdecode(np.fromfile('./val/%d.bmp'  %i ,dtype=np.uint8), -1) #读取拍摄的左右双目照片

    # cv2.imshow("zuo", img1[300:1200, 500:2000])
    # cv2.imshow("you", img2[300:1200, 500:2000])

    # cv2.waitKey(0)
    
    #设置左右照片的存储位置
    cv2.imwrite("./val/zuo/reLeft%d.bmp"  %i  ,imgT[0:720, 0:1280] )#imgL的第一个参数是图片高度像素范围,第二个参数是图片宽度的像素范围
    cv2.imwrite("./val/you/reRight%d.bmp" %i ,imgT[0:720, 1280:2560] )
    print("Resize images%d Fnished!" %i)

print("Fnished All!!!")

注意:
1、运行resize.py前,注意设置左、右照片的分别的存储位置。
2、运行resize.py后,终端打印"Fnished All!!!"表示分割完成。
3、程序退出后,打开存储照片的文件夹查看照片,是否分割完成,左摄像头照片存放在zuo,右摄像头照片存放在you。(文件名可自己更改)

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Matlab中,双目相机标定参数可以通过以下步骤进行导出: 1. 首先,使用`stereoCameraCalibrator`函数对双目相机进行标定。这个函数可以通过提供的一组标定图像,自动检测并提取相机的内外参数。 2. 利用`exportCameraParameters`函数将标定参数导出为.mat文件。这个函数需要提供`stereoParameters`对象以及导出文件的路径。例如,如果标定参数对象名称为`stereoParams`,导出文件路径为`'path\to\exportedParameters.mat'`,则可以使用以下代码将标定参数导出为.mat文件: ``` exportCameraParameters(stereoParams, 'path\to\exportedParameters.mat'); ``` 3. 导出的.mat文件可以使用Matlab中的`load`函数加载,以便在其他程序中使用。例如,如果导出的.mat文件名为`exportedParameters.mat`,则可以使用以下代码加载导出的标定参数: ``` load('path\to\exportedParameters.mat'); ``` 加载后,标定参数将存储在一个结构体变量中,可以使用`.`操作符访问不同的参数。例如,为了访问左相机的内参数矩阵,可以使用以下代码: ``` leftIntrinsicMatrix = exportedParameters.CameraParameters1.IntrinsicMatrix; ``` 通过以上步骤,可以成功导出双目相机标定参数并在其他程序中使用。 ### 回答2: Matlab双目相机标定参数的导出可以通过以下步骤完成。 首先,确保你已经完成了双目相机标定,得到了相机的内参和外参参数。在Matlab中,可以使用Camera Calibration Toolbox进行标定,它提供了一些现成的函数和工具。 一旦标定完成,你可以通过以下步骤导出标定参数: 1. 打开Matlab并加载标定结果。运行以下命令加载标定结果文件: load('calibrationResults.mat'); 根据你的实际情况,你可能需要修改文件名。 2. 导出相机内参参数。内参参数包括相机的焦距、主点坐标和畸变系数等。使用以下命令将内参参数导出到一个变量中: cameraParams = calibrationResults.CameraParameters; 完成后,你可以通过查看`cameraParams`的内容来确认导出结果。 3. 导出相机外参参数。外参参数包括相机的旋转矩阵和平移向量等。使用以下命令将外参参数导出到一个变量中: R = calibrationResults.RotationMatrices; t = calibrationResults.TranslationVectors; 通过查看`R`和`t`的内容,你可以确认导出的外参参数结果。 4. 可选:将导出的参数保存到文件中。如果你希望以后能够方便地重用这些参数,你可以将它们保存到一个文件中。使用以下命令将参数保存到一个.mat文件中: save('calibrationParameters.mat', 'cameraParams', 'R', 't'); 又一次,你可以根据实际需求修改文件名。 以上就是在Matlab中导出双目相机标定参数的步骤。通过这些参数,你可以在后续的双目视觉处理中使用它们来恢复场景的三维信息。 ### 回答3: 在Matlab中,双目相机标定参数的导出可以通过以下步骤完成: 1. 首先,需要使用Matlab的Camera Calibrator App来对双目相机进行标定。该应用程序提供了一个图形界面,可以帮助用户轻松地对相机进行标定。 2. 打开Matlab并运行Camera Calibrator App。选择相机类型为双目相机,并确保相机连接到计算机上。 3. 进入标定图像窗口,拍摄一些标定板图像。确保尽量覆盖不同的角度和方向,以获取更准确的标定结果。 4. 在图像标定窗口中,选择"导出参数"选项。这将打开一个导出参数对话框。 5. 在导出参数对话框中,选择导出的参数类型。可以选择导出相机的内部参数(如相机的焦距、主点位置等)和外部参数(如相机的旋转矩阵和平移矩阵)。 6. 点击"导出"按钮,选择文件保存的位置和文件名。确保选择适合您的应用程序的文件格式,如MAT文件或XML文件。 7. 单击"保存"按钮,完成导出,将标定参数保存到所选择的文件中。 导出参数后,您可以使用这些参数进行相机校正、3D重构或其他相关应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值