关于 hough_line 和 hough_line_peaks 的代码解释
code explanation about hough_line and hough_line_peaks
我能够找到这个 link: 然后我只使用了允许计算角度的代码部分:
import numpy as np
from skimage.transform import (hough_line, hough_line_peaks, probabilistic_hough_line)
from pylab import imread, gray, mean
import matplotlib.pyplot as plt
image = imread('D:\Pictures\PyTestPics\oo.tiff')
image = np.mean(image, axis=2)
h, theta, d = hough_line(image)
angle = []
dist = []
for _, a, d in zip(*hough_line_peaks(h, theta, d)):
angle.append(a)
dist.append(d)
angle = [a*180/np.pi for a in angle]
angle_reel = np.max(angle) - np.min(angle)
print(angle_reel)
任何人都可以向我解释 for 循环和 angle_reel 的代码吗?因为我不明白怎么会有多个角度,这些多个角度是在图像中的什么线和其他物体之间形成的?将不胜感激。
您的图像有两条线,我将它们称为 line a 和 line b。每条线都有角度。这些线之间的角度将是 angle of line a - angle of line b.
当您的代码遍历 hough_line_peaks
时,它实际上是在遍历每一行的数据。每条线都有一个距离和一个角度。
for _, a, d in zip(*hough_line_peaks(h, theta, d)):
angle.append(a)
dist.append(d)
如果您的图像中有两条线,您最终会得到一个包含两个值的角度列表。这两个值将是线条相对于图像边缘的角度。要找到相互参照的线条的角度,请减去这些值。
这是一个示例图片:
直线的角度是:[1.3075343725834614, 0.48264691605429766]
。这是以弧度为单位的,因此使用代码将它们转换为度数:angle = [a*180/np.pi for a in angle]
。角度为 [74.91620111731844, 27.65363128491619]
。这似乎很合理,一个是45度多一点,一个是少一点。直线之间的角度是 max(angles) - min(angles)
或 47.262 度。
此图片显示了在图片上绘制的角度:
我能够找到这个 link:
import numpy as np
from skimage.transform import (hough_line, hough_line_peaks, probabilistic_hough_line)
from pylab import imread, gray, mean
import matplotlib.pyplot as plt
image = imread('D:\Pictures\PyTestPics\oo.tiff')
image = np.mean(image, axis=2)
h, theta, d = hough_line(image)
angle = []
dist = []
for _, a, d in zip(*hough_line_peaks(h, theta, d)):
angle.append(a)
dist.append(d)
angle = [a*180/np.pi for a in angle]
angle_reel = np.max(angle) - np.min(angle)
print(angle_reel)
任何人都可以向我解释 for 循环和 angle_reel 的代码吗?因为我不明白怎么会有多个角度,这些多个角度是在图像中的什么线和其他物体之间形成的?将不胜感激。
您的图像有两条线,我将它们称为 line a 和 line b。每条线都有角度。这些线之间的角度将是 angle of line a - angle of line b.
当您的代码遍历 hough_line_peaks
时,它实际上是在遍历每一行的数据。每条线都有一个距离和一个角度。
for _, a, d in zip(*hough_line_peaks(h, theta, d)):
angle.append(a)
dist.append(d)
如果您的图像中有两条线,您最终会得到一个包含两个值的角度列表。这两个值将是线条相对于图像边缘的角度。要找到相互参照的线条的角度,请减去这些值。
这是一个示例图片:
直线的角度是:[1.3075343725834614, 0.48264691605429766]
。这是以弧度为单位的,因此使用代码将它们转换为度数:angle = [a*180/np.pi for a in angle]
。角度为 [74.91620111731844, 27.65363128491619]
。这似乎很合理,一个是45度多一点,一个是少一点。直线之间的角度是 max(angles) - min(angles)
或 47.262 度。
此图片显示了在图片上绘制的角度: