Как обнаружить (большинство) засыпанных раствором камней с помощью OpenCV findContoursPython

Программы на Python
Ответить
Anonymous
 Как обнаружить (большинство) засыпанных раствором камней с помощью OpenCV findContours

Сообщение Anonymous »

Мне нужно правильно очертить как можно больше засыпанных раствором камней в уличной зоне. Приведенный ниже код правильно обнаруживает некоторые из них на изображении камней «in.jpg», но неясно, почему многие из них остаются необнаруженными или обрисованы лишь частично. Я также хотел бы исправить такие случаи, как контур 56, 57 или 92, используя тот факт, что камни выровнены и в основном овальное изображение с обнаруженными контурами «out.jpg». Я знаю, как убрать очевидные выбросы, но перед этим мне нужно улучшить метод обнаружения.

Код: Выделить всё

import cv2
img = cv2.imread('in.jpg')
gray = cv2.bitwise_not(img)
gray = cv2.cvtColor(gray, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (113, 113), 0)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 61, 2)
thresh = cv2.dilate(thresh, None, iterations=5)
thresh = cv2.erode(thresh, None, iterations=1)
cnts, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print(f'Found {len(cnts)} contours')
cv2.drawContours(img, cnts, -1, (0, 255, 0), 2)
centroids = [cv2.moments(c) for c in cnts]
for i, c in enumerate(centroids):
cv2.putText(img, str(i), (int(c['m10'] / c['m00']), int(c['m01'] / c['m00']) - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2)
cv2.imwrite('out.jpg', img)
Различные параметры (размытие 113 и т.д.) получены методом проб и ошибок.
Недостаточно просто посчитать камни, Мне нужно максимально точно воссоздать их форму.
Спасибо за ваши предложения!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ndcontours
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»