İçindekiler:

Yüz Takip Cihazı! Python ve Arduino: 5 Adım
Yüz Takip Cihazı! Python ve Arduino: 5 Adım

Video: Yüz Takip Cihazı! Python ve Arduino: 5 Adım

Video: Yüz Takip Cihazı! Python ve Arduino: 5 Adım
Video: python arduino yüz takibi 2024, Kasım
Anonim
Image
Image
Yüz Takip Cihazı! Python ve Arduino
Yüz Takip Cihazı! Python ve Arduino
Yüz Takip Cihazı! Python ve Arduino
Yüz Takip Cihazı! Python ve Arduino

Tarafından Techovator0819Youtube KanalımYazarın Daha Fazlasını Takip Edin:

IoT: Hava Durumu Kutusu (Özel Alarmlar ve Zamanlayıcılar ile)
IoT: Hava Durumu Kutusu (Özel Alarmlar ve Zamanlayıcılar ile)
IoT: Hava Durumu Kutusu (Özel Alarmlar ve Zamanlayıcılar ile)
IoT: Hava Durumu Kutusu (Özel Alarmlar ve Zamanlayıcılar ile)
Çok işlevli Otonom Robot: 'Varlık'
Çok işlevli Otonom Robot: 'Varlık'
Çok işlevli Otonom Robot: 'Varlık'
Çok işlevli Otonom Robot: 'Varlık'

Hakkında: Sadece yeni şeyler yapmayı seviyorum. Mikro denetleyiciler, makine mühendisliği, Yapay Zeka, Bilgisayar Bilimi ve beni ilgilendiren her şeyle ilgili şeyler gibi. Ve burada hepsini bulacaksınız… Techovator0819 Hakkında Daha Fazlası »

Herkese merhaba, bu talimatı okuyan herkes. Bu, OpenCV adlı bir python kütüphanesi üzerinde çalışan bir yüz takip cihazıdır. CV, 'Bilgisayar Görüşü' anlamına gelir. Sonra bilgisayarım ve Arduino UNO'm arasında bir seri arayüz kurdum. Bu, bunun yalnızca Python'da çalışmadığı anlamına gelir.

Bu cihaz çerçevedeki yüzünüzü tanır, ardından kamerayı çerçevenin içinde kalacak şekilde konumlandırmak için Arduino'ya belirli komutlar gönderir! Kulağa hoş geliyor mu? Hemen içine atlayalım o zaman.

Gereçler

1. Arduino UNO

2. 2 x Servo Motor (Herhangi bir servo motor iyi olacak ama ben Tower Pro SG90 kullandım)

3. Python'u Yüklemek

4. OpenCV'yi Yükleme

5. Web Kamerası

Adım 1: Python ve OpenCV Kurulumu

Python'u kurmak oldukça basittir!

www.python.org/downloads/

Size en uygun (64 bit veya 32 bit) python sürümünü (Mac, Windows veya Linux) indirmek için yukarıdaki bağlantıyı takip edebilirsiniz. Yükleme işleminin geri kalanı basittir ve arayüz tarafından yönlendirileceksiniz.

Kurulumu tamamladıktan sonra, komut isteminizi açın ve aşağıdakini yazın:

pip kurulumu opencv-python

Bu, openCV kitaplığını kurmalıdır. Sorun giderme durumunda BU sayfaya göz atabilirsiniz.

Ortamı ve tüm önkoşulları kurduktan sonra, bunu gerçekten nasıl inşa edebileceğimize bir bakalım!

2. Adım: Haar'a Benzer Özellikler Nelerdir?

Haar benzeri özellikler, dijital bir görüntünün özellikleridir. Adı Haar dalgacıklarından geliyor. Bunlar, dijital bir görüntüdeki özellikleri tanımlamak için kullanılan kare şekilli dalga ailesidir. Haar kaskadları temel olarak, haar benzeri özellikleri kullanarak nesneleri (bizim durumumuzda yüzleri) algılamamıza yardımcı olan bir sınıflandırıcıdır.

Bizim durumumuzda, basit olması için, yüzleri tanımlamak için önceden eğitilmiş Haar Cascade'lerini kullanacağız. Bir github sayfasının BU bağlantısını takip edebilir ve Haar Cascade için xml dosyasını indirebilirsiniz.

1. 'haarcascade_frontalface_alt.xml' üzerine tıklayın

2. Kod penceresinin sağ üst kısmındaki 'Ham' düğmesine tıklayın.

3. Sizi sadece metin içeren başka bir sayfaya yönlendirecektir.

4. Sağ tıklayın ve 'Farklı kaydet..' seçeneğine tıklayın.

5. Yazmak istediğiniz python koduyla aynı dizine veya klasöre kaydedin.

Adım 3: Python'da Kodlama

cv2'yi içe aktar

numpy'yi np olarak içe aktar, seri içe aktarma süresini içe aktar

İhtiyacımız olan tüm kütüphaneleri içe aktarıyoruz.

ard = seri. Serial("COM3", 9600)

'ard' adında bir seri nesne oluşturuyoruz. Port Adı ve BaudRate'i de parametre olarak belirtiyoruz.

face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml')

Haar Cascade'imiz için başka bir nesne yaratıyoruz. HaarCascade dosyasının bu python programıyla aynı klasörde kaldığından emin olun.

video = cv2. VideoCapture(0)

Web kamerasından video çeken bir nesne oluşturuyoruz. parametre olarak 0, bilgisayarıma bağlanan ilk web kamerası anlamına gelir.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

Doğru iken:

_, çerçeve = vid.read()#geçerli çerçeveyi çerçeve değişkenine okur gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#çerçeveyi dönüştürür -> gri tonlamalı görüntü #aşağıdaki satır yüzleri algılar. #İlk parametre #minSize=() üzerinde algılamak istediğiniz görüntüdür piksel cinsinden yüzün minimum boyutunu belirtir #Kademeli Sınıflandırma hakkında daha fazla bilgi için yukarıdaki bağlantıya tıklayın yüzler = face_cascade.detectMultiScale(gray, minSize =(80, 80), minNeighbors=3) #A for döngüsü yüzleri algılamak için. yüzlerde (x, y, w, h) için: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#etrafına bir dikdörtgen çizer yüz Xpos = x+(w/2)#yüzün merkezinin X koordinatını hesaplar. Ypos = y+(h/2)#Xpos > 280 ise yüzün merkezinin Y koordinatını hesaplar: #Aşağıdaki kod blokları yüzün ard.write('L'.encode()) #on olup olmadığını kontrol eder çerçevenin time.sleep(0.01) #merkezine göre sol, sağ, üst veya alt. elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos < 200: ard.write('U'.encode()) time.sleep(0.01) başka: ard.write ('S'.encode()) time.sleep(0.01) break cv2.imshow('frame', frame)#kareyi ayrı bir pencerede görüntüler. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #klavyede 'q' tuşuna basılırsa while döngüsünden çıkar. kırmak

cv2.destroyAllWindows() #tüm pencereleri kapatır

ard.close() #seri iletişimi kapatır

vid.release() #web kamerasından video almayı durdurur.

Adım 4: Arduino'yu Programlama

Programı, ihtiyaçlarınıza uygun donanım kurulumunuza göre değiştirmekten çekinmeyin.

#Dahil etmek

Servo servoX;

Servo servo;

int x = 90;

int y = 90;

geçersiz kurulum() {

// bir kez çalıştırmak için kurulum kodunuzu buraya koyun: Serial.begin(9600); servoX.attach(9); servoY.ek(10); servoX.write(x); servoY.write(y); gecikme(1000); }

karakter girişi = ""; //seri giriş bu değişkende saklanır

boşluk döngüsü () {

// tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: if(Serial.available()){ //seri tamponda herhangi bir veri olup olmadığını kontrol eder input = Serial.read(); // verileri bir değişkene okur if(input == 'U'){ servoY.write(y+1); //servo açısını y += 1 girişine göre ayarlar; //açının değerini günceller } else if(input == 'D'){ servoY.write(y-1); y -= 1; } başka{ servoY.write(y); } if(input == 'L'){ servoX.write(x-1); x -= 1; } else if(input == 'R'){ servoX.write(x+1); x += 1; } başka{ servoX.write(x); } girdi = ""; //değişkeni temizler } //işlem tekrar etmeye devam eder!!:) }

Adım 5: Sonuç

Bu, Arduino projelerinize Computer Vision'ı dahil ederek tasarlayabileceğiniz güzel ve etkileşimli bir yoldur. Computer Vision aslında oldukça eğlenceli. Ve umarım gerçekten beğenmişsinizdir. Evet ise, yorumlarda bana bildirin. Ve lütfen youtube kanalıma abone olun. Şimdiden teşekkürler <3<3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Önerilen: