Я использовал преобразование Лапласа в OpenCV для обнаружения края, а затем использовал преобразование линии Hough для обнаружения линий в нем. Эти идентифицированные строки должны быть в конечном итоге удалены из изображения.Hough Line Transform идентифицирует только одну строку, хотя изображение содержит много строк в OpenCV в Python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
laplacian = cv2.Laplacian(th4,cv2.CV_8UC1)
cst = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(laplacian,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(cst,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('houghlines5.jpg',cst)
Я ожидаю, чтобы идентифицировать все строки в Bill:
Результаты лапласиана обнаружения края выглядит следующим образом:
, тогда как результаты, возвращенные Hough Line Transform идентифицирует только одну строку, обозначенную зеленой линией на изображении ниже:
Может ли кто-нибудь помочь мне разобраться, какие изменения в коде потребуются, чтобы можно было идентифицировать все смелые горизонтальные/вертикальные линии интернет-Билла?
Можете ли вы также добавить результат обнаружения лапласианского края как изображение? Преобразование hough очень чувствительно к параметрам, дальнейшая оптимизация должна выполняться на итерации. –
Пожалуйста, добавьте в свой код импорт изображения и импорт библиотек, которые вы использовали, чтобы любой, кто захочет помочь, должен только скопировать код для его проверки. –