В компьютерном зрении и обработке изображений обнаружение контуров играет решающую роль в обнаружении объектов, анализе формы и сегментации изображений. OpenCV, популярная библиотека компьютерного зрения, предоставляет функцию findContours, которая позволяет нам извлекать контуры из бинарных изображений или изображений с четко выраженными краями. В этой статье мы рассмотрим различные методы и приемы использования функции findContours в OpenCV, а также примеры кода.
- Основное использование:
Функция findContours принимает на вход двоичное изображение и возвращает список контуров, присутствующих на изображении. Вот простой пример:
import cv2
# Load the image
image = cv2.imread('image.jpg')
# Convert the image to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Apply binary thresholding
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# Find contours
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Draw contours on the original image
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
# Display the image
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
-
Режимы поиска контуров.
Функция findContours имеет параметрmode, который определяет режим поиска контуров. Различные режимы:cv2.RETR_EXTERNAL: извлекает только внешние контуры.cv2.RETR_LIST: извлекает все контуры без каких-либо иерархических связей.cv2.RETR_TREE: извлекает все контуры в иерархической древовидной структуре.cv2.RETR_CCOMP: извлекает все контуры и организует их в двухуровневую иерархию.
-
Методы аппроксимации контура.
Функция findContours также имеет параметрmethod, который определяет метод аппроксимации контура. Доступные методы:cv2.CHAIN_APPROX_NONE: сохраняет все точки контура.cv2.CHAIN_APPROX_SIMPLE: сжимает горизонтальные, вертикальные и диагональные сегменты только до их конечных точек.cv2.CHAIN_APPROX_TC89_L1иcv2.CHAIN_APPROX_TC89_KCOS: применяет алгоритм аппроксимации цепочки Тех-Чин.
-
Фильтрация контуров.
После обнаружения контуров часто необходимо фильтровать их по определенным критериям. Этого можно достичь с помощью таких методов, как фильтрация контурной области, фильтрация соотношения сторон и фильтрация ограничивающего прямоугольника.
В этой статье мы рассмотрели функцию findContours в OpenCV, которая является мощным инструментом для обнаружения контуров и анализа объектов в приложениях компьютерного зрения. Мы рассмотрели базовое использование этой функции и обсудили различные режимы поиска контуров, методы аппроксимации контуров и методы фильтрации контуров. Используя эти методы, разработчики могут извлекать ценную информацию из изображений и выполнять такие задачи, как обнаружение объектов и анализ формы.
Не забудьте поэкспериментировать с различными параметрами и изучить дополнительные функции, предоставляемые OpenCV, для дальнейшего улучшения ваших проектов компьютерного зрения.