You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
4.4 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Измерение размера объектов с помощью 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. Фотографии подвержены радиальному и тангенциальному искажению объектива, что может привести к неравномерным размерам объекта.