|
|
# Измерение размера объектов с помощью OpenCV
|
|
|
### Вычисляет размер объектов на основе заданного эталонного объекта
|
|
|
|
|
|
Классный оценщик размера объекта с помощью только OpenCV и python
|
|
|
|
|
|
Выражаю благодарность Адриану Роузброку (из [pyimagesearch](https://www.pyimagesearch.com /)) за создание
|
|
|
отличных руководств. Этот проект вдохновлен его блогом: [Измерение размера объектов на изображении с помощью OpenCV](https://www.pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv/). Я включил код автора и тот, который я написал сам.
|
|
|
|
|
|
## ** Ключевые моменты**
|
|
|
1. Необходимые шаги:
|
|
|
1. Найдите контуры на изображении.
|
|
|
2. Получите прямоугольник минимальной площади для контуров.
|
|
|
3. Нарисуйте средние точки и линии, соединяющие средние точки ограничивающего прямоугольника контуров.
|
|
|
4. Выделите опорный объект из контуров и вычислите соотношение **Пиксель на метрику**.
|
|
|
5. Вычислите и распечатайте размеры ограничивающего прямоугольника на основе размеров эталонного объекта.
|
|
|
2. Допущения:
|
|
|
1. На изображении есть эталонный объект, который легко найти, и его ширина / высота нам известна.
|
|
|
3. Использует соотношение "Пиксель на метрику" для вычисления размера на основе данного эталонного объекта.
|
|
|
4. Свойства ссылочного объекта:
|
|
|
1. Мы должны знать размеры этого объекта (в пересчете на ширину или высоту).
|
|
|
2. Мы должны быть в состоянии легко найти этот эталонный объект на изображении, либо основываясь на размещении объекта (например, в верхнем левом углу и т.д.), либо по внешнему виду (например, отличительному цвету и / или форме).
|
|
|
5. Использовал квартал Соединенных Штатов в качестве эталонного объекта.
|
|
|
6. Использовал метод поиска контуров в OpenCV, чтобы найти объекты на изображении и вычислить их размеры.
|
|
|
|
|
|
## ** Требования: (с версиями, на которых я тестировал)**
|
|
|
1. python (3.7.3)
|
|
|
2. opencv (4.1.0)
|
|
|
3. numpy (1.61.4)
|
|
|
4. imutils (0.5.2)
|
|
|
|
|
|
## **Команды для запуска обнаружения:**
|
|
|
```
|
|
|
питон object_size.py --изображение images/example_01.png --ширина 0.955
|
|
|
```
|
|
|
|
|
|
## **Результаты:**
|
|
|
Результаты довольно приличные, хотя и не идеальные. Это связано с ограничениями самого изображения, поскольку на нем не идеальный вид объектов сверху вниз, и некоторые калибровки также могли быть выполнены в камере перед щелчком по изображению.
|
|
|
|
|
|

|
|
|

|
|
|
|
|
|
|
|
|
## ** Ограничения**
|
|
|
1. Для получения точных результатов этот метод требует, чтобы изображение объектов было почти идеальным при просмотре сверху вниз. В противном случае размеры объектов на изображении могут быть искажены.
|
|
|
2. Фотографии подвержены радиальному и тангенциальному искажению объектива, что может привести к неравномерным размерам объекта. |