Поиск контуров в изображении OpenCV cv2 в Python

Контур на изображении – это контур объектов, присутствующих на изображении. Значимость объектов зависит от выбранного вами требования и порогового значения.

В этом руководстве мы узнаем, как находить контуры на изображении с помощью библиотеки OpenCV в Python.

Шаги для поиска контуров

Чтобы найти контуры на изображении, выполните следующие действия:

  1. Считайте изображение в градациях серого.
  2. Используйте функцию cv2.threshold(), чтобы получить пороговое изображение.
  3. Используйте cv2.findContours() и передайте пороговое изображение и необходимые параметры.
  4. findContours() возвращает контуры. Вы можете нарисовать его на исходном или на пустом изображении.

Пример 1

В этом примере мы возьмем следующее изображение и применим вышеупомянутые шаги, чтобы найти контуры.

Поиск контуров

В этом примере мы запишем контуры в новое двоичное изображение.

import cv2
import numpy as np

img = cv2.imread('D:/original.png', cv2.IMREAD_UNCHANGED)

#convert img to grey
img_grey = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#set a thresh
thresh = 100
#get threshold image
ret,thresh_img = cv2.threshold(img_grey, thresh, 255, cv2.THRESH_BINARY)
#find contours
contours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

#create an empty image for contours
img_contours = np.zeros(img.shape)
# draw the contours on the empty image
cv2.drawContours(img_contours, contours, -1, (0,255,0), 3)
#save image
cv2.imwrite('D:/contours.png',img_contours)

Поиск контуров в изображении

В приведенной выше программе на Python мы взяли пороговое значение 100. Если вы измените порог, контуры также изменятся. Примем пороговое значение 128 и посмотрим на результат.

Функция findContours() в Python

В зависимости от цветового распределения и характеристик исходного изображения вы должны выбрать пороговое значение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *