Я пытаюсь сегментировать сине-черную линию этого изображения.

исходное изображение

Но я не смог сегментировать их отдельно (используя библиотеку OpenCV в Java), и это привело к такому:

бинаризованное изображение

Я попробовал эту функцию: {{Х0}}

Как я могу сегментировать синие и черные линии отдельно, используя библиотеку OpenCV?

1
Davi Silva Romão 16 Янв 2020 в 03:33

2 ответа

Лучший ответ

Если цвета линий заданы, вы можете определить цветовой диапазон и отфильтровать изображение.

Вот пример кода (не мой; взят с этого сайта: https: // pythonprogramming .net / Светофильтр - питон - OpenCV - учебник / )

lower_red = np.array([30,150,50])
upper_red = np.array([255,255,180])

mask = cv2.inRange(hsv, lower_red, upper_red)
res = cv2.bitwise_and(frame,frame, mask= mask)

cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
0
user3842413 16 Янв 2020 в 00:51

Попробуйте использовать adaptiveThreshold и настройтесь на свои нужды.

 // Adaptive Threshold
 Imgproc.adaptiveThreshold(test_image, test_image, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C,
                Imgproc.THRESH_BINARY_INV, 15,2);

См. Дополнительные примеры

0
fabfas 16 Янв 2020 в 00:57