Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单应?OpenCV方法处理某些视图中缺少的棋盘角点?_Python_Opencv_Camera Calibration_Cv2 - Fatal编程技术网

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

Python 单应?OpenCV方法处理某些视图中缺少的棋盘角点?,python,opencv,camera-calibration,cv2,Python,Opencv,Camera Calibration,Cv2,我刚刚安装了OpenCV 3.2.0,通过使用cv2,我可以找到许多/大部分的角落。查找棋盘角(左灰色,(6,5))或使用cv2。良好的特性跟踪(灰色,25,0.01,10),如中所述 虽然findChessboardCorners要么返回全部6×5=30个,要么None,但我可以看到,对于低质量的图像,有时并非所有点都能通过goodFeaturesToTrack方法找到 但是,当我阅读图片时,看起来对象点需要与每个视图的图像点一一对应。如果其中一个图像缺少一个点,我必须找到它并将其从该图像的对

我刚刚安装了OpenCV 3.2.0,通过使用
cv2,我可以找到许多/大部分的角落。查找棋盘角(左灰色,(6,5))
或使用
cv2。良好的特性跟踪(灰色,25,0.01,10)
,如中所述

虽然findChessboardCorners要么返回全部6×5=30个,要么
None
,但我可以看到,对于低质量的图像,有时并非所有点都能通过
goodFeaturesToTrack
方法找到

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

是否有一些cv2方法可以自动处理此问题

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

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


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

您可以通过稍微更改所使用的模式来处理此问题。这里需要指定缺少哪些角点。OpenCV有一个简单的解决方案:ChArUco板。下面我附上了该模式用法的教程

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

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

关于在python中使用charuco,还有一些答案:


简而言之,从以下方面来看,流程如下:

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

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


@Lamarlatell你能帮我解开我对OpenCV的理解吗?:-)好吧,这不是我想的那种事情,但它确实似乎是解决“缺少角落”问题的方法。这个周末我要试一试,谢谢你的帮助!!我试图用这种方法来创建一个像OP一样的单应性,但它是镜像的!ID正确绘制,但单应性透视的结果被翻转。你知道这是什么原因吗?