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

本文介绍了使用OpenCV进行相机标定的过程,包括图片筛选、内参和畸变系数获取,以及三维点如何在二维图像中投影。适合畸变小的普通相机,不适合鱼眼相机。文中还提供了代码实现和结果展示,并预告了后续的图像去畸变、鸟瞰图生成等话题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 内容

可用于相机标定图片筛选

相机标定

三维点重投影会二维图像

绘制Z平面以及连接线

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

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在绘制直线和平面时需手动将坐标信息转为整型,老版本绘制直线
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值