Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用撇渣法获得hough线峰的x,y坐标_Python_Hough Transform_Scikit Image - Fatal编程技术网

Python 如何用撇渣法获得hough线峰的x,y坐标

Python 如何用撇渣法获得hough线峰的x,y坐标,python,hough-transform,scikit-image,Python,Hough Transform,Scikit Image,我想要的是轮廓形状范围内的x0和x1值,即640(2D)。我想将y0和y1缩放到我的轮廓的大小。形状使用该公式计算的y0,y1坐标对应于直线与图像边缘相交的位置。这就是为什么它包括0和outlines.shape[1] y0对应于直线与列0相交的行,因此0*cos(角度) y1对应于线条与图像最后一列相交的行,即其宽度(即轮廓。形状[1]) 因此,您可以从(0,y0)到(宽度,y1)绘制一条线,以强调检测到的线。例如,使用outlines[line(0,y0,width-1,y1]=1。注意我使

我想要的是轮廓形状范围内的
x0
x1
值,即640(2D)。我想将
y0
y1
缩放到我的
轮廓的大小。形状

使用该公式计算的
y0,y1
坐标对应于直线与图像边缘相交的位置。这就是为什么它包括
0
outlines.shape[1]

y0
对应于直线与列0相交的行,因此
0*cos(角度)

y1
对应于线条与图像最后一列相交的行,即其宽度(即
轮廓。形状[1]

因此,您可以从
(0,y0)
(宽度,y1)
绘制一条线,以强调检测到的线。例如,使用
outlines[line(0,y0,width-1,y1]=1
。注意我使用
width-1
,因为索引从0开始,并且
width
超出范围。在公式中不是这种情况,因为它是从
dist
中减去的


很好地说明了它是如何工作的,以及如何将发现的线条添加到图像中(在第一部分中)。将没有灵感的X形图像替换为您选择的图像,您将看到线条。理想情况下,您的图像应该是二值化的,并且没有太多的点,因此尝试将其通过边缘检测器(Canny)或者骨骼化过程。

你能详细描述一下你的情况吗?好的。想象一下如果你有一个正方形的边界图像。通过hough变换,你可以得到线条。现在通过我在web上找到的公式,我可以得到线条的y坐标。现在这些线条边界没有限制。没有限制,我的意思是点可以是less小于0,我想要的是,通过一些等式,我得到x坐标和y,在0到640的范围内。
h, theta, d = transform.hough_line(outlines)
for acum, angle, dist in zip(*transform.hough_line_peaks(h, theta, d)):
    y0 = (dist - 0 * np.cos(angle)) / np.sin(angle)
    y1 = (dist - outlines.shape[1] * np.cos(angle)) / np.sin(angle)
    x0 = ...
    x1 = ...
    rr,cc,_ = draw.line_aa(x0,y0,x1,y1)