寻找倾斜图像的棋盘角

Posted

技术标签:

【中文标题】寻找倾斜图像的棋盘角【英文标题】:finding Checker board corners for inclined image 【发布时间】:2018-08-27 12:08:00 【问题描述】:

enter image description here我尝试使用 findcheckerboardcorners Opencv 函数找到棋盘角。我的图案尺寸是 (7x7)。当图像与相机平行时它可以正常工作,但是当它稍微向地面倾斜时它会失败。是否可以在函数中将 (7x7) 棋盘图案的图案尺寸设为 (5x5)?

示例: 对于倾斜度更大的图像,它会失败。 Image fails

它适用于图像 Image with corners detected

即使图像倾斜,是否有可能获得所有可见角?

【问题讨论】:

如果你给算法另一个尺寸,那么它会是模棱两可的(取 5x5 个点),之后你的校准就会出错。可能是它与天花板上的光混淆了?你可以用drawChessboardCorners 绘制检测到的标记并发布它的图像吗?了解检测到的和未检测到的 我已将我的结果上传到link,其中无法检测到具有 7x7 图案尺寸的 secong 图像和 5x5 图案尺寸的图像都失败了 图片打不开,博客不公开。请使用问题中的编辑按钮添加图片。 查看这些答案:1) ***.com/a/15074774/1435240 2) ***.com/a/12821056/1435240 【参考方案1】:

当您选择校准图案时,请选择在水平方向 (8, 7) 或垂直方向 (7, 8) 具有更多角的图案。

您可以尝试检测棋盘格的不同选项。

vector<Point2f> corners;
Size checkerBoardSize(7,7);
bool found = findCheckerBoard(img, checkerBoardSize, corners, CALIB_CB_SYMMETRIC_GRID);
if(!found)
    found = findCheckerBoard(img, checkerBoardSize, corners, CALIB_CB_SYMMETRIC_GRID | CALIB_CB_CLUSTERING);

//You can draw and see the detected points as follows
Mat res = img.clone();
if(res.channels() == 1)
    cvtColor(res, res, CV_GRAY2BGR);
drawChessboardCorners(res1, checkerBoardSize, corners, found);
imshow("res", res);
waitKey(0);

【讨论】:

谢谢.. 但我在检测倾斜且不平行于相机的棋盘格图案时遇到问题。 findChessboardCorners() 函数在哪里返回 null

以上是关于寻找倾斜图像的棋盘角的主要内容,如果未能解决你的问题,请参考以下文章

如何检测一个棋盘角?

opencv:检测棋盘角的最佳方法

如何对找到的棋盘角进行排序?

图像内的可点击元素 - 网络棋盘游戏

尝试查找棋盘角时出现opencv python错误

单应性?在某些视图中处理丢失棋盘角的 OpenCV 方法?