Как найти длину и ширину обнаруженных объектов с помощью функции findContours? - PullRequest
2 голосов
/ 03 июня 2019

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

Example image

На этом изображении вся черная часть является чешуйкой, и я хочу найти длину и ширину каждой чешуйки.

Я использовал функцию findContours, чтобы обнаружить все эти хлопья.Я также использовал функцию arcLength для нахождения длины, но я не знаю возвращаемого значения этой функции.

Итак, есть ли метод для измерения идеальной длины и ширины объекта?

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Зависит от необходимой вам точности.

Самый простой способ - использовать функцию minc для opencv на каждом подуровне обнаружения (просто перенести каждый контур обнаружения [i] на слой)

RotatedRect minAreaRect(InputArray points)

Ширина и высота выходного прямоугольника - это то, что вы ищете

enter image description here

Другой инструмент называется выпуклым. Чтобы определить это, вы должны найти основное направление (собственное) и найти длину. Если вам нужно найти изогнутую длину, то вам нужно проследить только невыпуклую область. это будет немного сложно

void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bool returnPoints=true )

enter image description here

0 голосов
/ 03 июня 2019

Как уже предлагалось, самый простой подход - это поиск минимального прямоугольника, в котором находится ваша пластинка, и эту функцию нужно вызвать:

OpenCV minAreaRect

...