Как я могу сегментировать цветную линию? - PullRequest
1 голос
/ 16 января 2020

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

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

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

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

Я попробовал эту функцию: mgproc.threshold(imgGray, imgThreshold, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU);

Как можно сегментировать синие и черные линии отдельно с помощью библиотеки OpenCV?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

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

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

Подробнее Java примеров

0 голосов
/ 16 января 2020

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

Вот пример кода (не мой; взят с этого сайта: https://pythonprogramming.net/color-filter-python-opencv-tutorial/ )

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)
...