问题描述
我之前有一些代码在旧版本的 OpenCV 上运行(cv2 version=$Rev: 4557 $),我正在尝试更新它以在更高版本上运行(cv2 version=3.4.2) .
我遇到的问题是,当给定完全相同的参数时,houghlinesp 函数在两个版本中并不总是产生完全相同的输出。
这是我创建的一些代码来演示这种情况:
import cv2
print('cv2 version=' + cv2.__version__ + '\n')
img = cv2.imread('img.png',0)
lines = cv2.houghlinesp(img,1.0,0.008726646259971648,5,minLineLength=14,maxLineGap=9)
print(lines)
这是正在使用的图像:
cv2 version=$Rev: 4557 $
[[[371 0 377 127]
[370 0 376 127]
[381 193 386 397]
[383 237 383 255]
[386 311 387 397]
[380 194 381 278]
[383 322 383 294]
[379 195 379 217]
[370 4 371 43]
[385 379 385 395]
[385 332 385 301]
[374 34 375 55]
[381 250 382 207]
[386 364 387 335]
[382 279 382 256]
[372 67 376 90]]]
cv2 version=3.4.2
[[[371 0 377 127]]
[[370 0 376 127]]
[[381 193 386 397]]
[[383 237 383 255]]
[[386 311 387 397]]
[[380 194 381 278]]
[[383 322 383 294]]
[[379 195 379 217]]
[[370 4 371 43]]
[[385 379 385 395]]
[[385 332 385 301]]
[[374 34 375 55]]
[[381 250 382 207]]
[[386 364 387 335]]
[[382 279 382 256]]]
当使用 OpenCV 3.4.2 版运行时,除了最后一行 [372 67 376 90] 外,所有与旧版本相同的行都可以找到。
注意: houghlinesp 函数也产生不同格式的结果,在 $Rev:4557 $ 版本中,输出是一个单项数组,该项是所有检测到的数组线。
例如[[[line1],[line2],[line3],[line4]]]
而在 3.4.2 版本中,输出是一个多项目数组,其中每个项目是一个包含不同检测行的单个项目数组。
例如[[[line1]],[[line2]],[[line3]],[[line4]]]
我知道这两个版本之间的格式差异,并在我更新的代码中说明了这一点。 我需要知道的是为什么使用 $Rev: 4557 $ 时检测到的某些行在使用 OpenCV 3.4.2 版时没有检测到 em> 以及如何在 3.4.2 版 上复制相同的结果。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)