Я изучаю OpenCV с python, работая над проектом, целью которого является обнаружение линий ладони.
![enter image description here](https://i.stack.imgur.com/zKbjn.jpg)
В основном я использовал Обнаружение канни-края , а затем применил Обнаружение прямой линии накрая, но результат не так хорош.
![enter image description here](https://i.stack.imgur.com/5Wfmt.jpg)
Вот исходный код, который я использую:
original = cv2.imread(file)
img = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY)
save_image_file(img, "gray")
img = cv2.equalizeHist(img)
save_image_file(img, "equalize")
img = cv2.GaussianBlur(img, (9, 9), 0)
save_image_file(img, "blur")
img = cv2.Canny(img, 40, 80)
save_image_file(img, "canny")
lined = np.copy(original) * 0
lines = cv2.HoughLinesP(img, 1, np.pi / 180, 15, np.array([]), 50, 20)
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(lined, (x1, y1), (x2, y2), (0, 0, 255))
save_image_file(lined, "lined")
output = cv2.addWeighted(original, 0.8, lined, 1, 0)
save_image_file(output, "output")
Я пробовал разные наборы параметров размера ядра Гаусса и Cannyнизкие / высокие пороги, но в результате либо слишком много шумов, либо пропущены (часть) основные линии.Приведенная выше картина - это уже лучшее, что я получаю, пока ...
Нужно ли что-то делать, чтобы улучшить результат, или любой другой подход мог бы получить лучший результат?
Буду признателен за любую помощь!