Opencv相机标定(1):内外参、畸变系数标定与三维点到二维图像投影

0. 内容

可用于相机标定图片筛选

相机标定

三维点重投影会二维图像

绘制Z平面以及连接线

注意:该标定方法适用于畸变较小得普通相机,鱼眼相机标定如下:Opencv相机标定(2):鱼眼相机校正_m0_58772523的博客-CSDN博客...

1. 图片筛选

利用opencv中findChessboardCorners判断图片是否可以检测到对应角点,若检测到角点ret值为True,当检测不到角点时删除对应图片。

import os
import cv2
import glob


def delete_pic(inter_corner_shape, img_dir, img_type):
    images = glob.glob(img_dir + os.sep + '**.' + img_type)
    for fname in images:
        img = cv2.imread(fname)
        gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        ret, cp_img = cv2.findChessboardCorners(gray_img,
            (inter_corner_shape[0], inter_corner_shape[1]), None)
        if not ret:
            os.remove(fname)


if __name__ == '__main__':
    inter_corner_shape = (9, 6)
    img_dir = "./data"
    img_type = "jpg"
    delete_pic(inter_corner_shape, img_dir, img_type)

2. 线条和平面绘制辅助函数(含详细注释)

# 二维图片, 图片角点坐标, 所需投影的三维点在图像中的投影点坐标
def draw(img, corners, imgpts):
    # 获取第一个图像角点信息
    corner = tuple(corners[0].ravel().astype(np.int64))
    # 利用第一个图像角点坐标和投影点的坐标绘制想要的直线和平面
    # np.ravel()函数为多维数组的维度降为一维
    # 新版本的opencv在绘制直线和平面时需手动将坐标信息转为整型,老版本绘制直线
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值