Контур на изображении – это контур объектов, присутствующих на изображении. Значимость объектов зависит от выбранного вами требования и порогового значения.
В этом руководстве мы узнаем, как находить контуры на изображении с помощью библиотеки OpenCV в Python.
Шаги для поиска контуров
Чтобы найти контуры на изображении, выполните следующие действия:
- Считайте изображение в градациях серого.
- Используйте функцию cv2.threshold(), чтобы получить пороговое изображение.
- Используйте cv2.findContours() и передайте пороговое изображение и необходимые параметры.
- 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 и посмотрим на результат.

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