摄像头标定与畸变矫正 自定义标定板

9 篇文章 0 订阅
6 篇文章 0 订阅

使用opencv+python 自己绘制标定板程序:

def getCheckerboardImage(block_length=50, width=10, height=8, iswrite=0, isshow=0):
    img_black = np.zeros([block_length, block_length, 3], np.uint8)
    img_white = np.ones([block_length, block_length, 3], np.uint8) * 255
    # print(img)
    for h in range(height):
        for w in range(width):
            if w is 0:
                if h % 2 is 0:
                    width_temp = img_black
                else:
                    width_temp = img_white
            else:
                if (w + h) % 2 is 0:
                    width_temp = np.hstack((width_temp, img_black))
                else:
                    width_temp = np.hstack((width_temp, img_white))
        if h is 0:
            checkerboardImg = width_temp
        else:
            checkerboardImg = np.vstack((checkerboardImg, width_temp))
    if isshow:
        cv2.imshow("checkerboardImg", checkerboardImg)
        cv2.waitKey()
    if iswrite:
        cv2.imwrite("checkerboardImg.jpg", checkerboardImg)
    return checkerboardImg
if __name__ == '__main__':
    block_length = 50   #每个块长或宽的像素值
    witdh = 10          #水平方向块数
    height = 8          #竖直方向块数
    bwrite = 0          #是否显示
    bshow = 0           #是否保存图像
    scale_add = 2
    CImage = getCheckerboardImage(block_length, witdh, height, 0, 0)

 

Opencv对于相机校准和3D重建的讲解:

https://docs.opencv.org/3.0-beta/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#fisheye-initundistortrectifymap

这个写的真的很细,如果想了解一些理论、算法方面的东西,可以先查看这篇文章

相机针孔模型----从世界坐标系,到相机坐标系,再到图像物理坐标系,最后到图像像素坐标系的转换过程解析

https://blog.csdn.net/wangxiaokun671903/article/details/37966891

相机转换的理论过程

单目摄像头标定与畸变矫正(C++,opencv)

https://zhuanlan.zhihu.com/p/55648494

有C++和opencv的实践代码

 

opencv-python 实现鱼眼矫正 棋盘矫正法

https://blog.csdn.net/hpuhjl/article/details/80899931

 

鱼眼摄像头的畸变矫正方法-python+opencv

https://blog.csdn.net/donkey_1993/article/details/103909811?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf

这两个python版本的程序都没有跑通,问题出在这个函数:

cv2.fisheye.calibrate(objpoints, imgpoints,gray.shape[::-1],K,D, rvecs,tvecs,calibration_flags, (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6))

个人是2020.11月份配置的python版本opencv,怀疑是版本升级造成了一些函数的变化。

 

C++ opencv 程序

https://blog.csdn.net/u011475210/article/details/79185543

调试成功

 

对开源代码的规范和整理:

网络开源代码:全部代码都在主函数中,并且需要手动辅助挑选图像

整理后:纯自动,代码较规范,

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值