发布时间:2023-11-25 13:00
2、MATLAB2018a
3、pycharm
4、格子图(棋牌格)
5、电脑自带相机
1、打印出下面的棋牌格子图并固定好
2、将摄像头通过USB线与电脑连接
3、调整分辨率为2560720、1280480、640*240
4、连续拍摄10张照片后,将棋牌格子图调整位置再拍10张照片,总共拍摄40张照片(可多一点)
打开pycharm,对收集的照片统一命名(当然也可以自己一个个命名,但是会很麻烦)
import os
class BatchRename():
def __init__(self):
self.path = r'F:\asd'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), (str(i)) + '.jpg')
try:
os.rename(src, dst)
print('converting %s to %s ...' % (src, ('pyp.' + dst)))
i = i + 1
except:
continue
print('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
目的是命名统一,方便后面对图片进行切割和处理
首先创建两个文件夹,一个命名为left,一个命名为right,打开MATLAB编写代码进行图片切割
clc;
for i=0:39 %40张照片,根据我自己的命名的方法从0到39
C=strcat('F:\asd\',num2str(i),'.jpg');
A=imread(C);
[m ,n,~]=size(A);
n1=n/2;
p_1=zeros(m,n1,3);
p_2=zeros(m,n1,3);
p_1=A(:,1:n1,:);
p_2=A(:,n1+1:n,:);
a=num2str(i);
cd('F:\asdzong\left');
imwrite(p_1,strcat(a,'_l.jpg'));
cd('F:\asdzong\right');
imwrite(p_2,strcat(a,'_r.jpg'));
end
1、打开matlab中的APP找到stereoCameraCalibrator运行
2、点击左上角的AddImages并将left、right文件夹地址分别输入,Size of checkerboard square后面填上棋牌格子图的格子尺寸(边长),点击确定,等待出现下面这个图
3、然后点击Calibrate出现下图:
4、去除误差比较大的数据:
5、得出最后结果:
6、打印标定结果(Export Camera Parameters):
7、退出stereoCameraCalibrator并保存结果生成一个mat文件
然后就可以利用标定结果进行校正和深度图的获取,在后续文章介绍