Python ve OpenCV ile Basit Şekil Algılama Uygulaması

1 3.946

Bu yazımız da Python ve OpenCV açık kaynak kodlu görüntü işleme kütüphanesini kullanarak kontur yaklaşımı ile basit şekil algılama uygulaması yapacağız.

Kontur Yaklaşımı Nedir?

Bu, bir kontur şeklini daha az sayıda köşeye sahip başka bir şekle yaklaşmak anlamına gelir, böylece her iki şekil arasındaki mesafe belirtilen hassasiyete daha az veya eşit olur. Aşağıdaki şekilde farklı kesimler (epsilon) için eğri yaklaşımı gösterilmektedir.

Kontur şeklini, belirttiğimiz hassasiyete bağlı olarak daha az sayıda köşe ile başka bir şekle yaklaştırır. Douglas-Peucker algoritmasının bir uygulamasıdır . Algoritma ve tanıtım için wikipedia sayfasını kontrol edin.opencv kontur yaklaşımı

Bunu anlamak için, bir görüntüde bir kare bulmaya çalıştığınızı varsayın, ancak görüntüdeki bazı sorunlar nedeniyle mükemmel bir kare elde etmediniz, ancak “kötü bir şekil” (Aşağıdaki ilk resimde gösterildiği gibi). Şimdi bu işlevi şekle yakınlaştırmak için kullanabilirsiniz. Burada, ikinci argümana konturdan yaklaşık konturuna maksimum mesafe olan epsilon denir. Bir doğruluk parametresidir. Doğru çıktıyı elde etmek için akıllıca bir epsilon seçimi gerekir.

Bu, robotikte desen sınıflandırması ve sahne analizi için yaygın olarak kullanılmaktadır. OpenCV, poligonal eğrilere belirtilen hassasiyetle yaklaşan yerleşik bir işlev sağlar. Uygulanması Douglas-Peucker algoritmasına dayanmaktadır .

  • curve“: yaklaşık olarak istediğimiz kontur / çokgen.
  • “ Epsilon “: Bu, orijinal eğri ile yaklaşımı arasındaki maksimum mesafedir.
  • closed”: Doğru ise, yaklaşık eğri aksi halde kapalıdır, değil.

Bu işlev, giriş eğrisiyle aynı türdeki yaklaşık konturu döndürür. Şimdi bu konsepti kullanarak basit şekilleri tespit edelim. Şekil algılamayı gerçekleştirmek için aşağıdaki görüntüyü alalım.

opencv kontur yaklaşımı

import cv2
import numpy as np
 
# Load the image
img = cv2.imread("D:/downloads/cont_new.png")
# Convert to greyscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Convert to binary image by thresholding
_, threshold = cv2.threshold(img_gray, 245, 255, cv2.THRESH_BINARY_INV)
# Find the contours
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# For each contour approximate the curve and
# detect the shapes.
for cnt in contours:
    epsilon = 0.01*cv2.arcLength(cnt, True)
    approx = cv2.approxPolyDP(cnt, epsilon, True)
    cv2.drawContours(img, [approx], 0, (0), 3)
    # Position for writing text
    x,y = approx[0][0]
 
    if len(approx) == 3:
        cv2.putText(img, "Triangle", (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, 0,2)
    elif len(approx) == 4:
        cv2.putText(img, "Rectangle", (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, 0,2)
    elif len(approx) == 5:
        cv2.putText(img, "Pentagon", (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, 0,2)
    elif 6 < len(approx) < 15:
        cv2.putText(img, "Ellipse", (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, 0,2)
    else:
        cv2.putText(img, "Circle", (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, 0,2)
cv2.imshow("final", img)
cv2.waitKey(0)

Aşağıda nihai sonuç verilmiştir.

opencv kontur yaklaşımı

Diğer OpenCV Örnekleri

Python ve OpenCv görüntü işleme kütüphanesi kullanarak hazırladığımız diğer örneklerimizin listesi:

  1. OpenCV Nedir?
  2. Python ve OpenCV ile Video Oynatma
  3. Python ve OpenCV ile Videoyu Renklerine Ayırma
  4. Python ve OpenCV İle Video Kaydetme
  5. Python ve OpenCV ile Resim İşlemlerine Giriş
  6. Python ve OpenCV Kullanarak Yüz Tanıma Uygulaması
  7. Python ve OpenCV Kullanarak Bilgisayar Kamerasından Görüntü Almak
  8. Pyton ve OpenCV Kullanarak Kenar Algılama Uygulaması
  9. Python ve OpenCV Kullanarak Resimlere Elastik Efekti Verme
  10. Python ve OpenCV Kullanarak SuperPixel İşlemi Uygulaması
  11. Python Ve OpenCv İle WebCam’den Aldığınız Görüntüyü İşlemek
  12. Python Ve OpenCV Ile Resimlerinizi JSON Formatına Çevirin
  13. Python Ve OpenCV Ile Youtube Videolarını Stream Yapma
  14. Python Ve OpenCV Kullanarak Bir Resmin Tüm Piksellerine Ulaşmak
  15. Python ve OpenCV kullanarak komik aynalar uygulaması
  16. Python, OpenCV Ve Tensorflow İle El Yazısı Tanıma Uygulaması

OpenCv ve Python Hakkındaki sorularınızı sorabilirsiniz.

Yazımız hakkındaki yorumlarınızı bekliyoruz.

Kaynak https://theailearner.com
1 yorum
  1. […] önce yine Python ve OpenCV kullanarak, kontur yaklaşımı kullanarak basit şekil algılamanın nasıl gerçekleştirileceğini yazmıştık. Bu blogda, belirli bir şeklin / eğrinin dışbükey […]

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku