Базовое изображение
Я хочу обнаружить здесь линии в сетке и попробовал различные подходы (преобразование Хафа + обнаружение краев Кэнни, обнаружение краев Собеля, даже обнаружение на основе цвета). Когда я пробую преобразование Хафа + Кэнни, я получаю вот такой результат:
Результат
В принципе не очень точный, лол. Он также неправильно классифицирует некоторые положительные моменты и довольно плохо пытается обнаружить некоторые линии сетки, находящиеся в тенях вверху и по бокам изображения. Вот мой код того, как я его реализую прямо сейчас:
Код: Выделить всё
import cv2
import numpy as np
img = cv2.imread('grid_image.png')
gray_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray_img, 50, 150)
lines = cv2.HoughLinesP(edges, rho=1, theta=np.pi/180, threshold=100, minLineLength=100, maxLineGap=10)
line_img = np.zeros_like(img)
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(line_img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# combine images
result = cv2.addWeighted(img, 0.8, line_img, 1, 0)
# Display the result
cv2.imshow('Grid Detection', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Подробнее здесь: https://stackoverflow.com/questions/784 ... -detection
Мобильная версия