文章目录
- 1、openpose 棋盘格检测流程
- 2、解决过程
- 3、实测结果
1、openpose 棋盘格检测流程
在opencv中通过调用cv::findChessboardCorners()
函数,同时指定棋盘格内角点尺寸来检测画面中的棋盘格,结果将以一定顺序来保存结果。通常指定尺寸的两个纬度的值不能相同,例如当指定内角定尺寸为8x8时,如果棋盘格在画面中出现旋转,那么棋盘格的起点位置会出现变化,从而导致结果错误。
以openpose中内参标定关于棋盘格的检测为例说明
- 首先在每一张图尝试在不停尺度上调用opencv的
cv::findChessboardCorners()
进行棋盘格检测并使用自定义参数进行角点亚像素精度定位。 - 接着对结果进行
reorderPoints()
重新排序处理。 - 最后对所有图的棋盘格检测结果进行
cv::calibrateCamera()
标定。
由于重排序策略的问题,会导致在内参和外参标定过程中棋盘格的位置发生变化时,会导致结果出错。例如实际使用棋盘格内角点尺寸为7x6,下图画面中棋盘格起点为右下角角点,终点为左上角,但openpose的结果最终会有出现右上角为起点、左下角为终点的错误结果。
2、解决过程
我们提前给出完整的github上提交 issu