Ну, я только что изучал библиотеку Python OpenCV в этом карантине, и проходил через это, я наткнулся на контур сроков.
Контуры можно объяснить просто как кривая, соединяющая все непрерывные точки (вдоль границы), имея одинаковый цвет или интенсивность. Контуры являются полезным инструментом для анализа и обнаружения и распознавания объектов. И нужно узнать, как мы можем использовать его, чтобы найти геометрические формы на изображении.
Давайте начнем, как это происходит.
Подход : Подход, который мы будем использовать для обнаружения формы данного многоугольника, будет основан на классификации обнаруженной формы на основе ряда сторон, которые у нее есть. Например, если обнаруженный полином имеет 3 стороны, то его можно рассматривать как треугольник, если полиномиальность имеет 4 стороны, то его можно было бы классифицировать как квадрат или прямоугольник и так далее. Давайте найдем, как это сделать Импорт библиотек
import numpy as np import cv2
Импортируйте изображение и преобразуйте в изображение серого.
3. Применение порога на изображение, а затем найти контуры.
img = cv2.imread('shapes.PNG') imgGry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) _, thrash = cv2.threshold(imgGry, 240 , 255, cv2.CHAIN_APPROX_NONE) contours , _ = cv2.findContours(thrash, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
« ret » собирает значение, которое в соответствии с Otsu Метод, является лучшим значением для порога изображения.
Порог – это техника в OpenCV , который является назначением значений пикселей по отношению к порог стоимость предоставлена. При пороге каждое значение пикселя сравнивается с пороговым значением. Если значение пикселя меньше порога, оно установлено на 0, в противном случае оно устанавливается на максимальное значение (обычно 255).
и для ” thrash “: это пороговое значение изображения
Каково пороговое значение изображения? **
Порог является некоторым фиксированным значением, которое привлекает граничную линию между двумя наборами данных. Бинарный (биологический) Изображение означает , только би или две интенсивность Значения можно использовать для представления всего изображения. В обработке изображений, как правило, мы говорим двоичный изображение, когда состоит только черно -белые пиксели.
Следующий : Используя CV2.findContour (), мы получаем контуры и иерархию. На самом деле мы получили три массива, сначала это изображение, во -вторых, это наши контуры и еще один вывод, который мы назвали иерархией.
Обычно мы используем cv2.findcontours () ** Функция для обнаружения объектов в изображении, верно? Иногда объекты находятся в разных местах. Но в некоторых случаях некоторые формы находятся внутри других форм, как вложенные фигуры. В этом случае мы называем внешний как родитель и внутренний как ребенок . Таким образом, контуры на изображении имеют некоторое отношение друг к другу. И мы можем указать, как один контур подключен друг к другу, например, это ребенок другого контура, или это родитель и т. Д. Представление этих отношений называется Иерархия Анкет
Контуры : Контуры ** Можно объяснить просто как кривая, соединяющая все непрерывные точки (вдоль границы), имея одинаковый цвет или интенсивность. контуры являются полезным инструментом для анализа форм и обнаружения объектов и распознавания.
4 . Следующий шаг: ** а) Начните цикл в диапазоне контур и перечитывает через него. б) печать полиномиального имени в соответствии с NO. контуры вместе, используя oppxpolydpfunction () **
Краткий обзор функций, используемых в этом блоке:
oppxpolydp () **: Эта функция вычисляет и аппроксимирует полигональную кривую с указанной точностью
oppxpolydp () ** приближается к форме контура к другой форме с меньшим количеством вершин в зависимости от точности, которую мы указываем. Это реализация Дуглас-Пейкер алгоритм. Проверьте страницу Википедии на предмет алгоритма и демонстрации.
Пример того, как работает oppxpolydp ().
DrawContours () : Рисует контурные контуры или заполненный цвет. Чтобы нарисовать контуры, _cv2.drawcontours Функция используется. Его также можно использовать для рисования любой формы, если у вас есть ее граничные точки. Его первым аргументом является исходное изображение, второй аргумент – это контуры, которые следует передавать в качестве списка Python, третий аргумент – это указатель контуров (полезный при рисовании отдельного контура. Чтобы нарисовать все контуры, пройти -1), а остальные аргументы -это цвет, толщина и т. Д.
BoundingRect () : Это дает граничные точки прямоугольника. putText () : Он помещает текст на изображение.
5 . Покажите Изображение и закройте все Windows **
И наша программа успешно работает. Изображение используется:
Вывод кода:
Доступен весь код 👇:
Ссылка GitHub на этот репо 👇:
SIMARPREETSINGH-019/OPENCV-обучение
Содержит коды и мини -проект, выполненные во время обучения OpenCV
Этот репозиторий содержит некоторые программы, которые я изучал при изучении библиотеки: OpenCV с использованием Python
Статьи Ссылка
Спасибо за чтение! Я надеюсь, что вам понравилась статья и получила дополнительную информацию. Если вы это сделали, не стесняйтесь оставить хлопок! Конструктивная обратная связь ценится. Не стесняйтесь обращаться ко мне Здесь, на LinkedIn или simarpreetsingh.019@gmail.com Анкет
Это все на этот раз, увидимся в ближайшее время с другим постом. Simarpreet Singh, подписание. ਸਤਿ ਸ਼ੀ੍ ਅਕਾਲ 🙏
Ссылка на статью средней статьи:
Обнаружение геометрических фигур в изображении с использованием OpenCV | Симарприт Сингх | Просто разработчик | Середина
Simarpreet Singh ・ 21 июня 2020 г. ・ 4 мин. Читать среду
Использованная литература:
Python3 #Detuction_shapes #ImageProcessing # OpenCV
Оригинал: “https://dev.to/simarpreetsingh019/detecting-geometrical-shapes-in-an-image-using-opencv-4g72”