# Измерение размера объектов с помощью 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
```

## **Результаты:**
Результаты довольно приличные, хотя и не идеальные. Это связано с ограничениями самого изображения, поскольку на нем не идеальный вид объектов сверху вниз, и некоторые калибровки также могли быть выполнены в камере перед щелчком по изображению.

![Gif 1 размеров объекта](example_01.gif )
![Gif 2 размеров объекта](example_02.gif )


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