Contours

Kategori: Python / OpenCV , 08 Ekim 2019 , JanFranco


Contour dediğimiz kavram basit haliyle çevredir. OpenCV kütüphanesinde, objelerin çevrelerini bulmamızı sağlayan methodlar bulunmaktadır. Bu yazıda bu methodları inceleyeceğiz:


import cv2
import numpy as np

image = cv2.imread('shapes.jpg')
cv2.imshow('Input Image', image)
cv2.waitKey(0)

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edged = cv2.Canny(gray, 30, 200)
cv2.imshow('Canny Edges', edged)
cv2.waitKey(0)

contours, hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.imshow('Canny Edges After Contouring', edged)
cv2.waitKey(0)

print("Number of Contours found = " + str(len(contours)))
 
cv2.drawContours(image, contours, -1, (0,255,0), 3)

cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
İlk olarak resmi grayscale image'e çevirdik. Daha sonra canny algoritması ile kenarları bulduk. Daha sonra findCountours methodu ile kenarları bulduk. findContours methodu parametre olarak görüntü, retrieval mod ve approximation mod alır. Approximation modlar aşağıdadır:


cv2.CHAIN_APPROX_NONE   – Bir çizgideki tüm noktaların koordinatlarını saklar
cv2.CHAIN_APPROX_SIMPLE – Başlangıç ve bitiş noktalarını saklayarak, doğru çizer
Retrieval modlar:


cv2.RETR_LIST     – Tüm kenarları alır
cv2.RETR_EXTERNAL - Dış kenarları alır
cv2.RETR_COMP
cv2.RETR_TREE  
Son iki mod için aşağıdaki linki inceleyebilirsiniz:


https://docs.opencv.org/3.4.0/d9/d8b/tutorial_py_contours_hierarchy.html
Ayrıca findContours methodu iki değer döner: Contours ve Hierarchy. Contours, numpy arraylerdir ve içlerinde, bulunan kenarların noktalarının koordinatları saklıdır. Hiearchy ise child-parent ilişkisini gösterir. Hiearchy ile daha fazla bilgi için yukarıdaki linki inceleyebilirsiniz. Koda geri dönecek olursak, son olarak drawContours ile resimdeki kenarların üzerini çizdik. drawContours methodunun parametreleri:


drawContours(image, contours, specific contour, color, thickness)
İlk parametre olarak görüntüyü, ikinci parametre olarak findContours methodundan dönen contours numpy arrayi, üçüncü parametre olarak hangi objelerin kenarlarının çizileceği (-1 girerek tümü demiş olduk), son iki parametre olarak da renk ve kalınlık bilgilerini alır.


Sonraki Yazı: Ordered Contours and Approximation Contours
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın