单应性?OpenCV方法来处理某些视图中缺少的棋盘角?

2024-04-29 11:59:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚安装了opencv3.2.0,我可以在this question中找到this image中的许多/大部分角落,方法是使用对比度,然后使用cv2.findChessboardCorners(left_gray, (6,5))或使用{},如the answer所述。在

当findChessboardCorners返回全部6×5=30或None时,我可以看到,对于质量较低的图像,使用goodFeaturesToTrack方法时,并不是所有的点都能找到。在

但是当我读到documentation for ^{}时,看起来对象点需要与每个视图的图像点一一对应。如果其中一个图像缺少一个点,我必须找到它并将其从该图像的对象点列表中删除。在

有没有什么cv2方法可以自动处理这个问题?在

编辑:我现在想知道,cv2.findHomography()是否使用了我在这里寻找的健壮方法之一?在

当然,如果一个外部行或列全部丢失,则存在无法解决的歧义,但如果缺少一些内部点,则仍然可以进行校准。在

我可能会尝试写一些东西,当然,只要拒绝任何找到角点数量错误的视图,但是如果已经有一种现有的方法来处理非歧义导致的缺失点,我想先尝试一下。我们的目标是尽可能地自动化这个过程,而不跳过每一张找到的点数错误的图像。在


Tags: the对象方法图像image视图错误this
1条回答
网友
1楼 · 发布于 2024-04-29 11:59:14

您可以通过稍微改变使用的模式来处理这个问题。你需要在这里指出哪些是遗漏的。OpenCV有一个简单的解决方案:ChArUco板。下面我附加了该模式用法的教程。在

http://docs.opencv.org/3.1.0/df/d4a/tutorial_charuco_detection.html

使用charuco,您可以指定自动检测哪些角点。然后可以调整对象点进行校准。在

如果使用python,则需要aruco库的包装:

https://github.com/opencv/opencv_contrib/pull/554/

https://github.com/fehlfarbe/python-aruco/

在python中使用charuco的一些答案:

http://answers.opencv.org/question/98447/camera-calibration-using-charuco-and-python/?answer=98451#post-id-98451/


简单地说,从linked tutorial开始,过程如下:

要定义CharucoBoard,需要使用定义生成模式,然后指定对检测算法的描述:

  • X方向的棋盘格数。在
  • Y方向的棋盘格数。在
  • 正方形边的长度。在
  • 标记侧的长度。在
  • 记号词典。在
  • 所有标记的ID。在

enter image description here

enter image description here

相关问题 更多 >