İçindekiler:
- Gereçler
- Adım 1: Python ve OpenCV Kurulumu
- 2. Adım: Haar'a Benzer Özellikler Nelerdir?
- Adım 3: Python'da Kodlama
- Adım 4: Arduino'yu Programlama
- Adım 5: Sonuç
Video: Yüz Takip Cihazı! Python ve Arduino: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Tarafından Techovator0819Youtube KanalımYazarın Daha Fazlasını Takip Edin:
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:
ARDUINO İLE YÜZ TAKİP !!!: 7 Adım
ARDUINO KULLANARAK YÜZ TAKİP !!!: Daha önceki bir talimatta Arduino ve Python arasında 'pyserial' modülü kullanarak nasıl iletişim kurabileceğinizi ve bir LED'i nasıl kontrol edebileceğinizi paylaşmıştım. Görmediyseniz, buradan kontrol edin: ARDUINO & PİTON! Ve rengi nasıl tespit edebileceğinizi
5'i 1 Arada Arduino Robotu - Beni Takip Et - Satır Takip - sumo - Çizim - Engelden Kaçınma: 6 Adım
5'i 1 Arada Arduino Robotu | Beni Takip Et | Satır Takip | sumo | Çizim | Engelden Kaçınma: Bu robot kontrol panosu, bir ATmega328P mikro denetleyici ve bir L293D motor sürücüsü içerir. Elbette bir Arduino Uno kartından farkı yok ama motoru sürmek için başka bir kalkana ihtiyaç duymadığı için daha kullanışlı! Zıplamaktan muaftır
Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
Küçük Dükkanlar için Takip ve Takip: Kısa mesafeli teslimatlar için e-bisiklet veya e-scooter üzerine monte edilmesi gereken küçük dükkanlar için yapılmış bir sistemdir, örneğin hamur işleri teslim etmek isteyen bir fırın. Track and Trace ne anlama geliyor?Track and Trace ca tarafından kullanılan bir sistemdir
Yüz Takip Tabancası: 4 Adım
Yüz İzleme Tabancası: Bu proje, burada gösterilen lazer tetikli tel tabanca projesinden bir genişletmedir - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ?ALLSTEPS Tek fark, silahın lazerle değil, lazerle tetiklenecek olmasıdır
Xbox Controller ile Yüz Takip ve Kontrollü Dilenci Robotu - Arduino: 9 Adım (Resimli)
Xbox Controller'dan Yüz Takip ve Kontrollü Dilenci Robotu - Arduino: Bir dilenci robotu yapacağız. Bu robot geçen insanları rahatsız etmeye veya dikkatini çekmeye çalışacaktır. Yüzlerini algılayacak ve onlara lazerler atmaya çalışacak. Robota bir jeton verirseniz, bir şarkı söyler ve dans eder. Robotun bir