Mundarija:
- Ta'minotlar
- 1 -qadam: Python va OpenCV -ni o'rnatish
- 2-qadam: Haarga o'xshash xususiyatlar nima?
- 3 -qadam: Python -da kodlash
- 4 -qadam: Arduino dasturlash
- 5 -qadam: Xulosa
Video: Yuzni kuzatish qurilmasi! Python va Arduino: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Techovator0819 tomonidan Mening Youtube kanalim Muallifning boshqa maqolalarini kuzatib boring:
Haqida: Men shunchaki yangi narsalarni qilishni yaxshi ko'raman. Mikroto'lqinlar, mashinasozlik, sun'iy intellekt, kompyuter fanlari va boshqa narsalar bilan bog'liq. Va bu erda siz hamma narsani topasiz … Techovator0819 haqida qo'shimcha ma'lumot »
Hammaga salom bu ko'rsatmalarni o'qiyotganlar. Bu OpenCV deb nomlangan python kutubxonasida ishlaydigan yuzni kuzatuvchi qurilma. CV "Kompyuter ko'rish" degan ma'noni anglatadi. Keyin men kompyuter va Arduino UNO o'rtasida ketma -ket interfeys o'rnatdim. Bu shuni anglatadiki, bu faqat Pythonda ishlamaydi.
Bu qurilma sizning yuzingizni ramkada taniydi, keyin Arduino -ga kamerani ramkada qoladigan tarzda joylashtirish uchun ma'lum buyruqlar yuboradi! Ovozli? Keling, darhol unga kiraylik.
Ta'minotlar
1. Arduino UNO
2. 2 x Servo dvigatellari (har qanday servo dvigatellar yaxshi bo'ladi, lekin men Tower Pro SG90 dan foydalanganman)
3. Python -ni o'rnatish
4. OpenCV -ni o'rnatish
5. Veb-kamera
1 -qadam: Python va OpenCV -ni o'rnatish
Python -ni o'rnatish juda oson!
www.python.org/downloads/
Siz o'zingizga eng mos keladigan (64 bit yoki 32 bit) python versiyasini (Mac, Windows yoki Linux) yuklab olish uchun yuqoridagi havola orqali o'tishingiz mumkin. Qolgan o'rnatish jarayoni oddiy va siz interfeys orqali boshqarasiz.
O'rnatishni tugatgandan so'ng, buyruq satrini oching va quyidagilarni kiriting:
opencv-python-ni o'rnatish
Bu OpenCV kutubxonasini o'rnatishi kerak. Nosozlik aniqlansa, BU sahifani tekshirib ko'rishingiz mumkin.
Atrof -muhitni va barcha shart -sharoitlarni o'rnatgandan so'ng, buni qanday qurish mumkinligini ko'rib chiqaylik!
2-qadam: Haarga o'xshash xususiyatlar nima?
Haarga o'xshash xususiyatlar raqamli tasvirning xususiyatlari. Bu ism Haar to'lqinlaridan kelib chiqqan. Bu to'rtburchaklar shaklidagi to'lqinlar oilasi, ular raqamli tasvirning xususiyatlarini aniqlashda ishlatiladi. Haar kaskadlari-bu tasniflagich bo'lib, u bizga haarga o'xshash xususiyatlar yordamida ob'ektlarni (bizning holatlarimizda) aniqlashga yordam beradi.
Bizning holatlarimizda, biz yuzlarni aniqlash uchun oldindan o'qitilgan Haar kaskadlaridan foydalanamiz, siz github sahifasining BU havolasini kuzatib, Haar kaskadining xml faylini yuklab olishingiz mumkin.
1. "haarcascade_frontalface_alt.xml" ni bosing
2. Kod oynasining o'ng yuqori qismidagi 'Raw' tugmasini bosing.
3. U sizni faqat matnli boshqa sahifaga yo'naltiradi.
4. Sichqonchaning o'ng tugmachasini bosing va "Saqlash …" ni bosing.
5. Uni siz yozmoqchi bo'lgan python kodi bilan bir xil katalog yoki papkada saqlang.
3 -qadam: Python -da kodlash
cv2 import qilish
import numpy np import ketma -ket import vaqti
Biz kerakli barcha kutubxonalarni import qilamiz.
ard = serial. Serial ("COM3", 9600)
Biz "ard" deb nomlangan ketma -ket ob'ektni yaratamiz. Shuningdek, biz Port nomi va BaudRate -ni parametr sifatida belgilaymiz.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Biz Haar Cascade uchun boshqa ob'ektni yaratamiz. HaarCascade fayli bu python dasturi bilan bir xil papkada qolishiga ishonch hosil qiling.
vid = cv2. VideoCapture (0)
Biz veb -kameradan video yozib oladigan ob'ekt yaratamiz. 0 parametr sifatida mening shaxsiy kompyuterimga ulangan birinchi veb -kamerani bildiradi.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
rost bo'lsa:
_, frame = vid.read ()#joriy freymni o'zgarmaydigan freymga o'qiydi kulrang = cv2.cvtColor (ramka, cv2. COLOR_BGR2GRAY)#ramkani o'zgartiradi -> kulrang tasvir#keyingi satr yuzlarni aniqlaydi. #Birinchi parametr - bu #minSize = () da aniqlamoqchi bo'lgan rasm, yuzning minimal hajmini piksellar bilan belgilaydi #Kaskad tasnifi yuzlari haqida ko'proq bilish uchun yuqoridagi havolani bosing = face_cascade.detectMultiScale (kulrang, minSize) = (80, 80), minNeighbors = 3) Yuzlarni aniqlash uchun loop uchun #A. yuzidagi (x, y, w, h) uchun: cv2. to'rtburchak (ramka, (x, y), (x+w, y+h), (255, 0, 0), 2)#atrofida to'rtburchak chizadi yuz Xpos = x+(w/2)#yuz markazining X koordinatasini hisoblab chiqadi. Ypos = y+(h/2) #yuz markazining Y koordinatasini hisoblaydi, agar Xpos> 280: #Quyidagi kod bloklari yuzning ard.write ('L'.encode ()) #on ekanligini tekshiradi. vaqtga nisbatan chap, o'ng, tepa yoki past.sleep (0.01) #ramka markazi. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) other: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#freymni alohida oynada ko'rsatadi. k = cv2.waitKey (1) & 0xFF agar (k == ord ('q')):: #if 'q' klaviaturada bosilsa, u vaqt tsiklidan chiqadi. tanaffus
cv2.destroyAllWindows () #barcha oynalarni yopadi
ard.close () #ketma -ket aloqani yopadi
vid.release () #veb -kameradan video olishni to'xtatadi.
4 -qadam: Arduino dasturlash
Dasturni sizning ehtiyojlaringizga mos keladigan uskuna sozlamalariga muvofiq o'zgartirish mumkin.
#qo'shing
Servo servoX;
Servo xizmat ko'rsatish;
int x = 90;
int y = 90;
bo'sh o'rnatish () {
// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); kechikish (1000); }
char kiritish = ""; // ketma -ket kirish bu o'zgaruvchida saqlanadi
void loop () {
// asosiy kodni bu erga qo'ying, qayta -qayta ishga tushiring: if (Serial.available ()) {// har qanday ma'lumot ketma -ket bufer kiritishda ekanligini tekshiradi = Serial.read (); // ma'lumotni o'zgaruvchiga o'qiydi, agar (input == 'U') {servoY.write (y+1); // y += 1 kirishiga qarab servo burchagini rostlaydi; // burchakning qiymatini yangilaydi} else if (input == 'D') {servoY.write (y-1); y -= 1; } boshqa {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } if if (input == 'R') {servoX.write (x+1); x += 1; } boshqa {servoX.write (x); } kirish = ""; // o'zgaruvchini tozalaydi} // jarayon takrorlanmoqda !!:)}
5 -qadam: Xulosa
Bu sizning Arduino loyihalaringizga Computer Vision -ni qo'shishingiz mumkin bo'lgan yaxshi va interaktiv usul. Computer Vision aslida juda qiziq. Va umid qilamanki, bolalar sizga yoqdi. Ha bo'lsa, izohlarda menga xabar bering. Va mening youtube kanalimga obuna bo'ling. Oldindan rahmat <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Tavsiya:
ARDUINO dan foydalangan holda yuzni kuzatish !!!: 7 qadam
ARDUINO -dan foydalangan holda yuzni kuzatish !!!: Oldingi yo'riqnomada men "pyserial" moduli yordamida Arduino va Python o'rtasida qanday aloqa o'rnatishni va LEDni boshqarishni aytib bergandim. Agar siz uni ko'rmagan bo'lsangiz, bu erdan tekshiring: ARDUINO O'rtasidagi Aloqa & PYTHON! Va rangni qanday aniqlash mumkin
Yuzni aniqlash va aniqlash - OpenCV Python va Arduino yordamida Arduino Face ID: 6 qadam
Yuzni aniqlash va aniqlash | OpenCV Python va Arduino yordamida Arduino Face ID: yuzni aniqlash AKA yuz identifikatori hozirgi vaqtda mobil telefonlarning eng muhim xususiyatlaridan biridir. Shunday qilib, menda "Arduino loyihasi uchun yuz identifikatori bo'lishi mumkinmi?" Degan savol bor edi. va javob ha … Mening sayohatim quyidagicha boshlandi: 1 -qadam: Bizga kirish
Ayollar uchun xavfsizlik qurilmasi, GPSni kuzatish va Arduino yordamida ogohlantirishlar: 6 qadam
Ayollar uchun xavfsizlik moslamasi Arduino yordamida GPS kuzatuvi va ogohlantirishlari bilan: So'nggi paytlarda bizda mavjud bo'lgan barcha texnologiyalar yordamida ayollar uchun xavfsizlik moslamasini yaratish qiyin emas, bu nafaqat favqulodda signalni, balki do'stlaringizga, oilangizga ham xabar yuboradi. yoki tegishli shaxs. Bu erda biz guruh tuzamiz
Yuzni kuzatish va tabassum Halloween robotlarini aniqlash: 8 qadam (rasmlar bilan)
Yuzni kuzatish va tabassum Halloween robotlarini aniqlaydi: Xellouin keladi! Biz ajoyib narsa qurishga qaror qildik. Ghosty va Skully robotlari bilan tanishing. Ular sizning yuzingizga ergashishi mumkin va siz qachon kulayotganingizni bilishadi! Bu loyiha iPhone -ni o'zgartiradigan iRobbie ilovasidan foydalanishning yana bir misolidir
Xbox Controller yordamida yuzni kuzatish va boshqarish bilan yolg'onchi robot - Arduino: 9 qadam (rasmlar bilan)
Xbox Controller yordamida yuzni kuzatish va nazorat qilish bilan yolvoradigan robot - Arduino: Biz yolvoruvchi robot yasaymiz. Bu robot g'azablantirmoqchi yoki o'tayotgan odamlarning e'tiborini tortishga harakat qiladi. Bu ularning yuzlarini aniqlaydi va ularga lazer bilan o'q uzishga harakat qiladi. Agar siz robotga tanga bersangiz, u qo'shiq kuylaydi va raqsga tushadi. Robotga kerak bo'ladi