Mundarija:

Yuzni kuzatish qurilmasi! Python va Arduino: 5 qadam
Yuzni kuzatish qurilmasi! Python va Arduino: 5 qadam

Video: Yuzni kuzatish qurilmasi! Python va Arduino: 5 qadam

Video: Yuzni kuzatish qurilmasi! Python va Arduino: 5 qadam
Video: Telefonni koʻz bilan boshqarish 2024, Noyabr
Anonim
Image
Image
Yuzni kuzatish qurilmasi! Python va Arduino
Yuzni kuzatish qurilmasi! Python va Arduino
Yuzni kuzatish qurilmasi! Python va Arduino
Yuzni kuzatish qurilmasi! Python va Arduino

Techovator0819 tomonidan Mening Youtube kanalim Muallifning boshqa maqolalarini kuzatib boring:

IoT: ob -havo qutisi (maxsus signal va taymerlar bilan)
IoT: ob -havo qutisi (maxsus signal va taymerlar bilan)
IoT: ob -havo qutisi (maxsus signal va taymerlar bilan)
IoT: ob -havo qutisi (maxsus signal va taymerlar bilan)
Ko'p funktsiyali avtonom robot: "aktiv"
Ko'p funktsiyali avtonom robot: "aktiv"
Ko'p funktsiyali avtonom robot: "aktiv"
Ko'p funktsiyali avtonom robot: "aktiv"

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: