我正在尝试使用OpenCV(Python)中的Hough变换来去除方框(垂直和水平线)。问题是没有任何垂直线被检测到。我已经尝试查找轮廓和层次结构,但是在这张图像中有太多轮廓,我不知道该如何使用它们。
经过查看相关的帖子,我已经尝试调整阈值和rho参数,但这并没有起到作用。我附上代码以获取更多细节。为什么Hough变换无法在图像中找到垂直线呢?欢迎提出任何解决此任务的建议。谢谢。
输入图像:
经Hough变换处理后的图像:
轮廓图像:
经过查看相关的帖子,我已经尝试调整阈值和rho参数,但这并没有起到作用。我附上代码以获取更多细节。为什么Hough变换无法在图像中找到垂直线呢?欢迎提出任何解决此任务的建议。谢谢。
输入图像:
![enter image description here](https://istack.dev59.com/FJAK4.webp)
![enter image description here](https://istack.dev59.com/q77rY.webp)
![enter image description here](https://istack.dev59.com/ZKNUb.webp)
import cv2
import numpy as np
import pdb
img = cv2.imread('/home/user/Downloads/cropped/robust_blaze_cpp-300-0000046A-02-HW.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 140, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,0,255), 2)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 5
maxLineGap = 100
lines = cv2.HoughLinesP(edges,rho=1,theta=np.pi/180,threshold=100,minLineLength=minLineLength,maxLineGap=maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('probHough.jpg',img)