gpt4 book ai didi

python - OpenCV(cv2)Python findChessboardCorners 在看似简单的棋盘上失败

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:40 25 4
gpt4 key购买 nike

我有以下从相机拍摄的棋盘图像:

left_image

这是我的最小工作示例代码:

import cv2
print(cv2.__version__)
left_gray = cv2.imread('left_raw.jpg', cv2.CV_LOAD_IMAGE_GRAYSCALE)
print(left_gray.shape)
ret, left_corners = cv2.findChessboardCorners(left_gray, (6,5))
print(left_corners)

这是输出,表明没有找到角点:

2.4.13.1
(1080, 1920)
None

我阅读了其他几个 StackOverflow 问题:

  1. This question是关于 opencv2 在“看似简单的场景”中失败,但我相信我拥有的图像要简单得多,因为这个有一个完全裁剪的棋盘版本。在我的例子中,我有一个棋盘,我把它放在一些白色打印纸上。
  2. This question是关于高分辨率图像的失败。我不确定我使用的相机是否是高分辨率的,但我的图像与那个问题不同,因为这里的棋盘(大致)居中并且没有完全倾斜。
  3. This question是关于在“完美”棋盘上的失败。然而,那个是对称的,而我的图像不是对称的(它有 6 行和 7 列)并且我正在为我的棋盘使用 (5,6) 的输入。我也尝试了 (6,5) 以防万一我倒退但没有运气。
  4. This question是关于有人弄错尺寸的。用户声称如果我们有一个 (10,7) 板,则函数的输入应该是 (9,7),其中 10 = 列数,7 = 原始板中的行数。但是,我认为我们必须从两个 维度中减去一个。无论如何,我尝试使用 (7,5) 和其他一些变体来处理我的图像,但这些都不起作用。
  5. This question是关于 MATLAB 的,但代码与 Python 应该没有太大区别,并且该用户在检测图像方面取得了一些成功,即使是在比我所拥有的复杂得多的场景中也是如此。

此时我对如何找到角落有点迷茫。有没有人想分享一些建议?如果您想测试它们,图像和代码就在这里。我还应该指出,我尝试在拍摄图像时增加原始相机的亮度,但没有成功。

最佳答案

我能够使用 cv2.goodFeaturesToTrack() 获得令人满意的结果。

代码:

corners = cv2.goodFeaturesToTrack(gray_img,25,0.01,10)
corners = np.int0(corners)

for i in corners:
x,y = i.ravel()
cv2.circle(img,(x,y),3,(0,0,255),-1)

cv2.imshow('Corners',img)

enter image description here

我知道它不准确,但通过一些预处理你应该能够获得更好的结果。

:D

关于python - OpenCV(cv2)Python findChessboardCorners 在看似简单的棋盘上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com