Başa dön
yüz tanıma sistemi

Yüz Tanıma Algılama Sistemi Yapımı – Nasıl Yapılır?

Merhaba arkadaşlar, bu makalemizde raspberry pi ve openCV kullanarak yüz tanıma yada yüz algılama sistemi yapımı nasıl gerçekleştirilir birlikte öğreneceğiz. 

Yüz Algılama Sistemi Yapımında Geometrik Şekiller Çizmek için Python Kodu

Aşağıdaki kod görüntünün üzerine çizgiler, elipsler, daireler, dikdörtgenler, polillerler ve metinler çizecektir. Bu kodu kopyalayın ve çalıştırın.

 

Python Kodu


Yüz Tanıma Sistemi Nasıl Çalışır? – Kod Dağılımı

İlk önce gerekli kütüphaneleri indiriyoruz. OpenCV paketi farklı geometrik şekiller çizmemize yardımcı olur ve NumPy paketi boş bir görüntü oluşturmamızı ve diğer matematiksel işlemleri yapmamızı sağlar.

Javascript Kodu

<span class="hljs-keyword">import</span> cv2

<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

 

Daha sonra üzerine geometrik şekiller çizebileceğimiz siyah bir görüntü oluşturuyoruz.

 

Python Kodu

img = np.zeros((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>, <span class="hljs-number">3</span>), np.uint8)

 

Ardından cv2.line () işlevini 5 piksel kalınlığında çapraz mavi bir çizgi çizmek için kullanalım. Siyah görüntü üzerinde soldan merkeze doğru sağa mavi bir çizgi çizelim.

 

Cv2.line () fonksiyonu beş argüman alır:

  1. Görüntü dosyası
  2. Başlangıç ​​noktaları (görüntü satırında başlayacaktır)
  3. Bitiş noktaları
  4. Çizginin rengi
  5. Çizginin kalınlığı

Python Kodu

<span class="hljs-comment">#img = cv2.line(image, (starting point), (Ending point), (color), line thickness)</span>
img = cv2.line(img, (<span class="hljs-number">0</span>, <span class="hljs-number">256</span>), (<span class="hljs-number">512</span>, <span class="hljs-number">256</span>), (<span class="hljs-number">255</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>), <span class="hljs-number">10</span>)

 

Şimdi, görüntünün ortasına iki elips çizeceğiz. Elipsi çizmek için birkaç argüman geçmeliyiz:

  1. Görüntü dosyası
  2. Merkez konumu (x, y)
  3. Büyük ve küçük eksen uzunlukları
  4. Saatin tersi yönde elipsin dönme açısı
  5. Başlangıç ​​ve bitiş açısı (başlangıç ​​ve bitiş açısı, ana eksenden saat yönünde ölçülen elips arkının başlangıç ​​ve bitişini belirtir, yani 0 ve 360 ​​değerleri vermek tam elipsi verir)
  6. Elipsin rengi
  7. Elipsin kalınlığı (-1, şekli dolduracağı anlamına gelir)

Python Kodu

<span class="hljs-comment">#cv2.ellipse(img, center, axes, angle, start angle, end angle, color, thickness=1)</span>
img = cv2.ellipse(img,(<span class="hljs-number">256</span>,<span class="hljs-number">256</span>),(<span class="hljs-number">50</span>,<span class="hljs-number">50</span>),<span class="hljs-number">180</span>,<span class="hljs-number">0</span>,<span class="hljs-number">180</span>,(<span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0</span>),<span class="hljs-number">-1</span>)
img = cv2.ellipse(img,(<span class="hljs-number">256</span>,<span class="hljs-number">256</span>),(<span class="hljs-number">50</span>,<span class="hljs-number">50</span>),<span class="hljs-number">0</span>,<span class="hljs-number">0</span>,<span class="hljs-number">180</span>,(<span class="hljs-number">0</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0</span>),<span class="hljs-number">-1</span>)

Sonra, elipsin üzerine kırmızı bir daire çizeceğiz. Bir daire çizmek için görüntü dosyasını, merkez koordinatını, dairenin yarıçapını, rengi (B, G, R) biçiminde ve dairenin kalınlığını geçmemiz gerekir.

Python Kodu

<span class="hljs-comment">#cv2.Circle(img, center, radius, color, thickness)</span>
img = cv2.circle(img, (<span class="hljs-number">256</span>, <span class="hljs-number">256</span>), <span class="hljs-number">56</span>, (<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">255</span>), <span class="hljs-number">10</span>)

Sonra dairenin üzerine yeşil bir dikdörtgen çizelim. Bir dikdörtgen çizmek için dikdörtgenin sol üst köşesine ve sağ alt köşesine ihtiyacınız vardır.

Python Kodu

<span class="hljs-comment">#img = cv2.rectangle(image, (Top Left Corner), (Bottom Right Corner), (color), thickness)</span>
img = cv2.rectangle(img, (<span class="hljs-number">189</span>, <span class="hljs-number">189</span>), (<span class="hljs-number">323</span>, <span class="hljs-number">323</span>), (<span class="hljs-number">0</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0</span>), <span class="hljs-number">10</span>)

Bir çokgen çizmek için, köşelerin koordinatlarına ihtiyacımız var. Bu noktaları ROWS x 1 x 2 şeklinde bir dizi haline getirin, burada ROWS, köşelerin sayısıdır ve int32 türünde olmalıdır.

Burada sarı renkte dört köşeli küçük bir çokgen çiziyoruz.

 

Python Kodu

pts = np.array([[<span class="hljs-number">10</span>,<span class="hljs-number">5</span>],[<span class="hljs-number">20</span>,<span class="hljs-number">30</span>],[<span class="hljs-number">70</span>,<span class="hljs-number">20</span>],[<span class="hljs-number">50</span>,<span class="hljs-number">10</span>]], np.int32)
pts = pts.reshape((<span class="hljs-number">-1</span>,<span class="hljs-number">1</span>,<span class="hljs-number">2</span>))
<span class="hljs-comment"># cv2.PolyLine(img, polys, is_closed, color, thickness=1)</span>
img = cv2.polylines(img,[pts],<span class="hljs-keyword">True</span>,(<span class="hljs-number">0</span>,<span class="hljs-number">255</span>,<span class="hljs-number">255</span>))

Resimlere metin koymak için, yazmak istediğimiz metin verilerini, istediğimiz yerin koordinatlarını (örneğin, verilerin başladığı sol alt köşe), yazı tipi türünü, yazı tipi ölçeğini (yazı tipinin boyutunu belirtir) sağlamamız gerekir.

Python Kodu

<span class="hljs-comment">#cv2.PutText(img, text, org, fontFace, fontScale, color, thickness, line type)</span>
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,<span class="hljs-string">'OpenCV'</span>,(<span class="hljs-number">10</span>,<span class="hljs-number">500</span>), font, <span class="hljs-number">4</span>,(<span class="hljs-number">255</span>,<span class="hljs-number">255</span>,<span class="hljs-number">255</span>),<span class="hljs-number">2</span>,cv2.LINE_AA)

Yüzleri Algılamak ve Yüzlerde Daire Çizmek için Python Kodu

Şimdi görüntüdeki yüzleri algılayacak ve yüzlerin çevresini çizecek kodu yazacağız. Yüzleri tespit etmek için, Haar Cascade kademeli sınıflandırıcısını kullanacağız. OpenCV zaten yüz, gözler, gülüş ve daha fazlası için önceden kodlanmış sınıflandırıcıları içermektedir. Kullanacağımız sınıflandırıcı yüzleri algılar. Cascade dosyasını  buradan alabilirsiniz .

Bu dosyayı çalışma dizinine ” haarcascade_frontalface_default.xml ” olarak kaydedin .

 

Python kodu aşağıdaki gibidir:

 

 

Python Kodu

 

Kodu çalıştırdıktan sonra program, görüntüde algıladığı yüzlerin etrafında daireler oluşturur.

görüntü

Diğer Güncel Teknoloji Haberlerimiz için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız, Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Okuduğunuz İçin Teşekkürler.

Kaynak:  maker.pro/raspberry-pi/tutorial/how-to-draw-geometric-shapes-using-opencv-on-raspberry-pi