我正在运行cv2.HoughLines()
,我认为它会返回一个包含rho和theta的列表。但是,我得到的是包含3个值的列表。有谁知道为什么?这是我的输出:
[[ 274. 2.11184835 563. ]]
[[ -8. 2.30383468 500. ]]
[[ 219. 2.14675498 479. ]]
[[ 142. 2.1991148 460. ]]
...
我在3.4。
编辑:这里有一些代码:
from __future__ import print_function
import cv2 as cv
import numpy as np
import sys
import math
if __name__ == '__main__':
print(__doc__)
try:
fn = sys.argv[1]
except IndexError:
fn = "../data/pic1.png"
src = cv.imread(fn)
dst = cv.Canny(src, 50, 200)
cdst = cv.cvtColor(dst, cv.COLOR_GRAY2BGR)
if False: # HoughLinesP
lines = cv.HoughLinesP(dst, 1, math.pi/180.0, 40, np.array([]), 50, 10)
a,b,c = lines.shape
for i in range(a):
cv.line(cdst, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 3, cv.LINE_AA)
else: # HoughLines
lines = cv.HoughLines(dst, 1, math.pi/180.0, 50, np.array([]), 0, 0)
if lines is not None:
a,b,c = lines.shape
for i in range(a):
print(lines[i])
这是图像:
答案 0 :(得分:0)
我运行了你的脚本,我只获得了两个值。这是我的输出。
[[ 274. 2.11184835]]
[[-8. 2.30383468]]
[[ 219. 2.14675498]]
再次检查输出。否则,您可以更简单地更改代码:
lines = cv.HoughLines(dst, 1, math.pi/180.0, 50, np.array([]), 0, 0)
for i in range(len(lines)):
for rho,theta in lines[i]:
print(rho,theta)