Как получить размер объекта с помощью OpenCV python? - PullRequest
1 голос
/ 11 февраля 2020

У меня есть вопрос относительно opencv python, у меня есть пример изображения здесь, я хочу знать, как получить размер этого объекта, используя opencv python.

Вот пример изображения

enter image description here

Вот вывод, который я хочу

enter image description here

Я просто использую краску для этого вывода.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Простой подход - получить двоичное изображение, а затем найти ограничивающую рамку на этом изображении. Вот результат с шириной (в пикселях) и высотой прямоугольника, нарисованного на изображении. Для определения реальных измерений вам понадобится калибровочная информация для масштабирования пикселей в конкретные значения (например, сантиметры). Без калибровочной информации для перевода пикселей в количественно измеряемую длину было бы трудно преобразовать ее в реальный размер.

enter image description here

Код

import cv2

# Load image, grayscale, Gaussian blur, Otsu's threshold
image = cv2.imread("1.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# Find bounding box
x,y,w,h = cv2.boundingRect(thresh)
cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)
cv2.putText(image, "w={},h={}".format(w,h), (x,y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (36,255,12), 2)

cv2.imshow("thresh", thresh)
cv2.imshow("image", image)
cv2.waitKey()
0 голосов
/ 11 февраля 2020

Вот быстрая рекомендация, почему бы не использовать детектор объектов, такой как YOLO, есть много предварительно подготовленных весов, которые вы можете скачать онлайн, и, к счастью, бананы есть в классах кокосов.

Вы можете взглянуть на это репозиторий github. : https://github.com/divikshrivastava/drfoodie

Редактировать: посмотрите здесь образец https://drive.google.com/file/d/1uJE0hy9mv75Ya3dqBIyw-kn1h87WLxy4/view?usp=drivesdk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...