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