我找到了这篇文章OpenCV findChessboardCorners very slow,但它没有完全回答我的问题。
我在覆盆子pi上运行相机校准工具,在全分辨率图像中检测棋盘角需要花费大量时间。我目前正在重新缩放它们,但计算出的参数不能用于全尺寸图像。
我想到的一件事是将图像中的角点检测到小4倍,然后将角点坐标乘以4,但结果并不完全相同。
您认为有没有办法加快或插入另一个角落检测?
我正在使用python实现(cv2)
由于
答案 0 :(得分:4)
大部分时间用于棋盘提取,其中包括(粗略地说)三个步骤:检测图像中的棋盘角,将它们细化为子像素分辨率,并将它们与标称棋盘匹配。
在这三个中,第一步是最昂贵的,因为它涉及处理整个图像。因此,您可以通过检测角落并以较低分辨率匹配棋盘来获得一些时间(使用cv2.findChessboardCorners)。然后,您可以将其坐标重新缩放为全分辨率,并对其进行亚像素精化(cv2.find4QuadCornersSubpix)以获得更高的精度。细化例程适用于检测到的角落周围的小区域,因此需要更少的内存 - 这对于处理缓存大小有限的CPU很有用。
此过程也有其他原因,请参阅this other answer。