我正嘗試在opencv(Python)中使用Hough變換去除方塊(垂直和水平線)。問題是沒有檢測到垂直線。我試圖通過輪廓和層次結構來查看,但是圖像中有太多的輪廓,我很困惑如何使用它們。在opencv中使用Hough變換檢測垂直線
看過相關帖子後,我已經玩過門檻和rho參數,但沒有幫助。 我已附上代碼以獲取更多詳細信息。爲什麼Hough變換不能在圖像中找到垂直線?歡迎任何解決此任務的建議。謝謝。
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)
部分可以初始閾值,這似乎太低。檢查中間圖像。我沒有真正回答你原來的問題,但我已經發布了一個可行的替代方法。 –