【发布时间】:2017-05-01 10:25:40
【问题描述】:
这是使用 Python 在 OpenCV 中进行霍夫变换的代码。 我无法理解 for 循环中的内容。有人能解释一下 for 循环是如何工作的吗?
import cv2
import numpy as np
img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,200)
for rho,theta in lines[0]:
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imwrite('houghlines3.jpg',img)
【问题讨论】:
-
您到底对哪一部分有理解困难?
-
你想知道
lines有什么吗? -
你必须在一些基本的例子中学习for循环,这个循环对于初学者来说是无法理解的,因为这里有循环体。
-
@DanielRoseman 循环如何更新?为什么要使用循环内的那些变量?
-
lines[0] 是一个列表,列表的每个元素都是一个元组 (rho,theta)。 for 循环将针对列表的每个元素,它将元组的值分配给您在 for 旁边看到的 2 个变量,然后它们用于计算行的结束点和开始点。然后循环在img中画线