所以,我最初假设在图像中找到棋盘应该是微不足道的,因为它是一个容易定义的对象。然而它并不是那么容易,我想知道是否有人知道棋盘查找器“cvFindChessboardCorners”如何在OpenCV中工作。我试过谷歌搜索它,但havnt设法找到算法。我猜可能如下:
1)二值化
2)打开和关闭以消除小簇
A)
2)找到Harris角落
3)在图像中的所有点之间创建距离矩阵
4)...?
B)
2)找到霍夫变换
3)检查所有重要的线是否相交。如果一条线上有4条或更多条线相交,那么这些线就是棋盘的一部分。这包括无穷远处的点
4)?
任何人都确切知道吗?
答案 0 :(得分:4)
这很漂亮......很复杂:)如果你想确切地知道,opencv的来源将是看的地方 - 在opencv 2.2中它位于modules/calib3d/src/calibinit.cpp
第219行。它还有一个{{1}编译开关,以便能够看到它是如何工作的。