Как правильно найти координаты белых кругов с помощью Python и методов обработки изображений?

#python #image #opencv #image-processing

Вопрос:

Я хочу найти координаты белых объектов на изображениях, как показано ниже, с помощью Python и обработки изображений:

введите описание изображения здесь введите описание изображения здесь

Комментарии:

1. Вам нужны центроиды или каждый белый пиксель?

2.SimpleBlobDetector-это хороший и простой подход. другие подходы заключались бы в использовании или объединении cv.findContours , cv.moments , cv.connectedComponentsWithStats docs.opencv.org/master/dd/d49/tutorial_py_contour_features.html

3. Мне нужно четыре числа (Xmin, Ymin, Xmax, Ymax) для каждого белого объекта на изображении @fmw42

4. Получите контуры, а затем получите их ограничительные рамки. См. cv2.findContours() и cv2.boundingRect()

Ответ №1:

Самый простой метод-использовать детектор больших двоичных объектов OpenCV. См. учебник по этой статье. Однако, поскольку это двоичное изображение, вы могли бы использовать что-то вроде алгоритма, описанного в этом видео из лекции «Первые принципы компьютерного зрения». Если вас интересует компьютерное зрение, я бы рекомендовал посмотреть всю эту серию. Это фантастика.

Если вы используете обнаружение больших двоичных объектов, вы должны установить цвет больших двоичных объектов следующим образом:

 params = cv2.SimpleBlobDetector_Params()

params.filterByColor = True
params.blobColor = 255

detector = cv2.SimpleBlobDetector_create(params)
 

Это позволит обнаружить белые точки на черном фоне. Установите значение blobColor равным 0 для черных точек на белом фоне.

Комментарии:

1. Спасибо за ваш ответ, но в моем случае детектор больших двоичных объектов в OpenCV не смог правильно определить положение объектов (из-за структуры некоторых объектов, которые не являются своего рода кругом), я, наконец, решил проблему с помощью cv.connectedComponentsWithStats