#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.html3. Мне нужно четыре числа (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