İçindekiler:

ARDUINO İLE YÜZ TAKİP !!!: 7 Adım
ARDUINO İLE YÜZ TAKİP !!!: 7 Adım

Video: ARDUINO İLE YÜZ TAKİP !!!: 7 Adım

Video: ARDUINO İLE YÜZ TAKİP !!!: 7 Adım
Video: ARDUİNO OPTA PRO | MÜHENDİSLER İÇİN !!! 2024, Kasım
Anonim
ARDUINO KULLANARAK YÜZ TAKİP !!!
ARDUINO KULLANARAK YÜZ TAKİP !!!

Önceki bir talimatta, 'pyserial' modülünü kullanarak Arduino ve Python arasında nasıl iletişim kurabileceğinizi ve bir LED'i nasıl kontrol edebileceğinizi paylaştım. Görmediyseniz, buradan kontrol edin: ARDUINO & PYTHON ARASINDAKİ İLETİŞİM!

Ve bir nesnenin rengini nasıl tespit edip ekranda takip edebileceğinizi buradan kontrol edin: OPENCV VE PYTHON KULLANARAK RENK TESPİTİ.

Bu Eğitilebilir Kitapta size Arduino ve Python kullanarak yüzleri nasıl izleyeceğinizi ve Kameranın yüzü takip etmesini sağlayacağım. Bu kulağa zor gelebilir ama inanın bana öyle değil, Tek ihtiyacınız olan temel Arduino ve Python bilgisi.

O halde başlayalım…

Adım 1: İhtiyacınız Olan Şeyler:

İhtiyacınız Olan Şeyler
İhtiyacınız Olan Şeyler
İhtiyacınız Olan Şeyler
İhtiyacınız Olan Şeyler
İhtiyacınız Olan Şeyler
İhtiyacınız Olan Şeyler

Gereksinimler minimumdur. Burada ihtiyacınız olan her şeyin parça listesini sağladım:

Donanım Gereksinimi:

  • Arduino UNO (Amazon ABD / Amazon AB)
  • Web Kamerası (Amazon ABD / Amazon AB)
  • Servolar x 2 (Amazon ABD / Amazon AB)
  • Breadboard (Amazon ABD / Amazon AB)
  • Servo Pan Tilt Kiti (Amazon ABD / Amazon AB)

Yazılım Gereksinimi:

  1. Python 2.7 (Yüklenmelidir, Linux işletim sistemi genellikle önceden yüklenmiştir)
  2. OpenCV (Ayrı olarak indirebilir veya 'pip kurulumunu' kullanarak kurabilirsiniz Daha fazla Açıklama)
  3. pyserial (pip ile kurulabilir)
  4. dizi.
  5. Haarcascade.

Her şey toplandıktan sonra Kurulum Adımına geçebiliriz…

Adım 2: Python Ortamını Ayarlama:

Python Ortamını Ayarlama
Python Ortamını Ayarlama
Python Ortamını Ayarlama
Python Ortamını Ayarlama
Python Ortamını Ayarlama
Python Ortamını Ayarlama

Python'u Yüklemek:

Bu yüzden önce Python 2.7'nin çalışır durumda olmasına ihtiyacımız var. Bunu yapmak için önce python 2.7.14'ü indirin ve yükleyin. Doğru kurulup kurulmadığını kontrol etmek için Git: Windows Arama >> "IDLE" yazın >> Enter'a basın. Bir Python Kabuğu açılmalıdır.

VEYA

Aramaya 'CMD' yazın ve Komut İstemi'ni açmak için enter tuşuna basın. CMD yazın >> python ve enter tuşuna basın, Python arayüzü.

CMD'de bir hata görürseniz, Panik yapmayın, muhtemelen ortam değişkenini ayarlamanız gerekir. Ortam Değişkenini ayarlamak için bu öğreticiyi Buradan takip edebilirsiniz.

Python'da 'pyserial', 'OpenCV" ve "numpy" yükleme:

Bu modülleri kurmak için pip kurulumunu kullanacağız, Önce CMD'yi açın ve aşağıdaki kodları yazın: -

pip kurulum seri

pip opencv-python kurulumu >pip kurulumu numpy

bu komutlar gerekli modülleri kuracaktır. Artık kodlama kısmına geçebiliriz…

3. Adım: Python Komut Dosyası:

Python Komut Dosyası
Python Komut Dosyası

Kod yazmaya başlamadan önce yapılacak ilk şey, tüm kodun aynı klasörde saklanması gerektiğinden yeni bir klasör oluşturmaktır. Bu yüzden yeni bir klasör oluşturun, istediğiniz herhangi bir ad verin. ve aşağıdan 'Haarcascade'i indirin ve klasöre yapıştırın.

Şimdi not defterini açın ve aşağıda verilen betiği yazın, haarcascade ile aynı klasöre 'face.py' olarak kaydedin. (Dosyayı verdiğim kodu aşağıdan indirebilirsiniz):

#gerekli tüm modülleri içe aktar

numpy as np import seri import time import sys import cv2 #Setup arduino için iletişim yolu ('COM5' yerine arduino'nuzun bağlı olduğu portu koyun) arduino = serial. Serial('COM5', 9600) time.sleep (2) print("Arduino'ya bağlandı…") #yüz algılama için Haarcascade'i içe aktarma face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #Web kamerasından video akışını yakalamak için. cap = cv2. VideoCapture(0) #Yakalanan görüntüyü okuyun, Gray görüntüye dönüştürün ve yüzleri bulun while 1: ret, img = cap.read() cv2.resizeWindow('img', 500, 500) cv2.line(img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line(img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle(img, (250, 250), 5, (255, 255, 255), -1) grey = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) yüzler = face_cascade.detectMultiScale(gri, 1.3) # yüzü tespit edin ve etrafına bir dikdörtgen yapın. yüzlerde (x, y, w, h) için: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grey[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] dizi = {y:y+h, x:x+w} yazdır (dizi) yazdır ('X:' +str(x)) print ('Y:'+str(y)) print ('x+w:' +str(x+w)) print ('y+h:' +str(y+h))) # ROi'nin merkezi (Dikdörtgen) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # arduinoya veri gönderme print("Dikdörtgenin Merkezi:", merkez) data = "X{0:d}Y{1:d}Z".format(xx, yy) print ("output = '" +data+ "'") arduino.write(data) #Akışı göster. cv2.imshow('img', img) #Yürütmeyi sonlandırmak için 'Esc' tuşuna basın k = cv2.waitKey(30) & k == 27 ise 0xff: break

Bu yapıldıktan sonra, arduino için kod yazmaya devam edin…

Adım 4: Arduino Kodu:

Arduino Kodu
Arduino Kodu

Python betiği hazır olduktan sonra servoyu kontrol etmek için arduino taslağına ihtiyacımız var. Aşağıdaki koda bakın, Arduino IDE'ye yapıştırın ve face.py ve haarcascade ile aynı klasöre 'servo.ino' olarak kaydedin. kodu yükleyin ve bağlantıları yapmak için bir sonraki adıma geçin.

(Aşağıda verilen indirilebilir dosya)

#Dahil etmek

Servo servoVer; //Dikey Servo Servo servoHor; //Yatay Servo int x; int y; int öncekiX; int önceki; geçersiz kurulum() { Serial.begin(9600); servoVer.attach(5); //Dikey Servoyu Pin 5'e servoHor.attach(6) ekleyin; //Yatay Servo'yu Pin 6 servoVer.write(90)'a ekleyin; servoHor.write(90); } void Pos() { if(öncekiX != x || önceki != y) { int servoX = harita(x, 600, 0, 70, 179); int servoY = map(y, 450, 0, 179, 95); servoX = min(servoX, 179); servoX = maks(servoX, 70); servoY = min(servoY, 179); servoY = maks(servoY, 95); servoHor.write(servoX); servoVer.write(servoY); } } void loop() { if(Serial.available() > 0) { if(Serial.read() == 'X') { x = Serial.parseInt(); if(Serial.read() == 'Y') { y = Serial.parseInt(); konum(); } } while(Serial.available() > 0) { Serial.read(); } } }

Adım 5: Pan-Tilt Mekanizması:-

Pan-Tilt Mekanizması
Pan-Tilt Mekanizması
Pan-Tilt Mekanizması
Pan-Tilt Mekanizması

Pan-Tilt için hazır bir kit kullandım. İsterseniz ahşap/Plastik veya hatta 3D baskı kullanarak kendiniz yapabilirsiniz.

Benim kullandığım oldukça ucuz ve montajı çok kolay. Yine de bunun nasıl yapılacağına dair talimatlar istiyorsanız, onu burada bulabilirsiniz.

Adım 6: Bağlantıların Yapılması:

Bağlantılar kurmak
Bağlantılar kurmak
Bağlantılar kurmak
Bağlantılar kurmak

Devre oldukça basittir. Sadece arduino'ya iki servo takın.

  1. Pin 5'e Dikey
  2. Pin 6'ya yatay
  3. +5V'a kadar güç
  4. GND'ye toprak

Referans için devre şemasını kontrol edin.

7. Adım: TEST ETME:

  • Her şey yapıldıktan sonra yapılacak son şey çalışıp çalışmadığını test etmektir. Test etmek için önce servoların arduino'ya doğru şekilde bağlandığından ve çizimin yüklendiğinden emin olun.
  • Çizim yüklendikten sonra, bağlantı noktasının python'a bağlanmak için ücretsiz olması için IDE'yi kapattığınızdan emin olun.
  • Şimdi Python IDLE ile 'face.py' dosyasını açın ve kodu çalıştırmak için 'F5' tuşuna basın. Arduino'ya bağlanmak birkaç saniye sürecek ve ardından web kamerasını yayınlayan bir pencere görebilmelisiniz. Şimdi kod yüzünüzü algılayacak ve servolar onu takip edecek.
  • Siz nesneyi hareket ettirirken Servo hareket etmelidir. Şimdi sadece kamerayı servolara bağlayın, böylece servolarla birlikte hareket edecek.

Teşekkürler.

Önerilen: