摄像机标定程序中用到的OpenCV函数

本文介绍了OpenCV中用于摄像机标定的相关函数,包括FindChessboardCorners寻找棋盘角点,FindCornerSubPix精确定位角点,DrawChessboardCorners绘制角点,以及CalibrateCamera2和Undistort2等校正图像变形的函数。

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

FindChessboardCorners 寻找棋盘图的内角点位置

 

int cvFindChessboardCorners( const void*image, CvSize pattern_size,

CvPoint2D32f* corners,int* corner_count=NULL,

int flags=CV_CALIB_CB_ADAPTIVE_THRESH );

 

image

输入的棋盘图,必须是8位的灰度或者彩色图像。

pattern_size

棋盘图中每行和每列角点的个数。

corners

检测到的角点

corner_count

输出,角点的个数。如果不是NULL,函数将检测到的角点的个数存储于此变量。

flags

各种操作标志,可以是0或者下面值的组合:

CV_CALIB_CB_ADAPTIVE_THRESH - 使用自适应阈值(通过平均图像亮度计算得到)将图像转换为黑白图,而不是一个固定的阈值。

CV_CALIB_CB_NORMALIZE_IMAGE - 在利用固定阈值或者自适应的阈值进行二值化之前,先使用cvNormalizeHist来均衡化图像亮度。

CV_CALIB_CB_FILTER_QUADS - 使用其他的准则(如轮廓面积,周长,方形形状)来去除在轮廓检测阶段检测到的错误方块。

函数cvFindChessboardCorners试图确定输入图像是否是棋盘模式,并确定角点的位置。如果所有角点都被检测到切它们都被以一定顺序排布(一行一行地,每行从左到右),函数返回非零值,否则在函数不能发现所有角点或者记录它们地情况下,函数返回0。例如一个正常地棋盘图右8x8个方块和7x7个内角点,内角点是黑色方块相互联通地位置。这个函数检测到地坐标只是一个大约地值,如果要精确地确定它们的位置,可以使用函数cvFindCornerSubPix。

 

 


FindCornerSubPix 寻找棋盘图的内角点位置

精确角点位置

void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,

                        int count, CvSize win, CvSize zero_zone,

                         CvTermCriteria criteria );

image

输入图像.

corners

输入角点的初始坐标,也存储精确的输出坐标

count

角点数目

win

搜索窗口的一半尺寸。如果win=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口

zero_zone

死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为 (-1,-1) 表示没有死区。 </

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值