gpt4 book ai didi

python - Hough Line变换无法正确识别任何线

转载 作者:行者123 更新时间:2023-12-02 17:37:45 26 4
gpt4 key购买 nike

我在Hough Line转换方面遇到麻烦。我正在尝试确定厨房中的主要线条。我最初只是使用Canny,但它会拾取比我想要的更多的噪音,并且没有拾取墙壁和天花板的交集。但是,“霍夫线”变换仅识别一条根本不应该识别的线。任何帮助,将不胜感激。

我的输入:

kitchen_sample.jpg

我的输出:

kitchen_lines.jpg

这是我的代码:

import cv2
import numpy as np

image = cv2.imread('kitchen_sample.jpg')
gray = cv2.cvtColor(image, 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(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

cv2.imwrite('kitchen_lines.jpg', image)

最佳答案

您可能正在看旧的opencv教程页面,其中可能有一个错误(或版本控制中的某些更改未跟踪opencv-python)。
Here's a new & correct one

您需要更改的只是更换

for rho, theta in lines[0]:


for line in lines:
rho,theta = line[0]

但是无论如何,要花费一些时间才能获得所需的输出。
我建议您使用 HoughLinesP,它可以轻松满足您的需求
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength=100,maxLineGap=10)
for line in lines:
x1,y1,x2,y2 = line[0]
cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)

enter image description here

关于python - Hough Line变换无法正确识别任何线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48569647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com