Мазмуну:

Бетке көз салуу түзмөгү! Python & Arduino: 5 кадам
Бетке көз салуу түзмөгү! Python & Arduino: 5 кадам

Video: Бетке көз салуу түзмөгү! Python & Arduino: 5 кадам

Video: Бетке көз салуу түзмөгү! Python & Arduino: 5 кадам
Video: ЭКИ КӨЗ КАМЕРА ЖАҢЫЛГАНДАН КИЙИН ТАҢ КАЛДЫ!!! 2024, Июль
Anonim
Image
Image
Бетке көз салуу түзмөгү! Python & Arduino
Бетке көз салуу түзмөгү! Python & Arduino
Бетке көз салуу түзмөгү! Python & Arduino
Бетке көз салуу түзмөгү! Python & Arduino

By Techovator0819Менин Youtube КаналымАзыр Автордун Дагы Издеңиз:

IoT: Аба ырайы кутусу (Өзгөчө Ойготкучтар жана Таймерлер менен)
IoT: Аба ырайы кутусу (Өзгөчө Ойготкучтар жана Таймерлер менен)
IoT: Аба ырайы кутусу (Өзгөчө Ойготкучтар жана Таймерлер менен)
IoT: Аба ырайы кутусу (Өзгөчө Ойготкучтар жана Таймерлер менен)
Көп функционалдуу автономдуу робот: "Актив"
Көп функционалдуу автономдуу робот: "Актив"
Көп функционалдуу автономдуу робот: "Актив"
Көп функционалдуу автономдуу робот: "Актив"

Жөнүндө: Мен жаңы нерселерди жасаганды жакшы көрөм. Микроконтроллерлер, машина куруу, жасалма интеллект, информатика жана мени кызыктырган нерселер сыяктуу. Ал эми бул жерде сиз… Techovator0819 жөнүндө кененирээк »

Саламатсыздарбы бул жерде окуганды окугандар. Бул OpenCV деп аталган питон китепканасында иштеген жүздү көзөмөлдөөчү түзүлүш. CV "Computer Vision" дегенди билдирет. Андан кийин мен компьютерим менен Arduino UNOнун ортосунда сериялык интерфейсти орноттум. Демек, бул Pythonдо гана иштебейт.

Бул түзмөк сиздин жүзүңүздү кадрда тааныйт, андан кийин камераны кадрдын ичинде калып туруу үчүн Arduinoго белгилүү буйруктарды жөнөтөт! Үнү сонунбу? Келгиле анда, ошол жерге кирели.

Жабдуулар

1. Arduino UNO

2. 2 x Servo Motors (Бардык сервоприводдор жакшы болот, бирок мен Tower Pro SG90 колдондум)

3. Python орнотуу

4. OpenCV орнотуу

5. Веб-камера

1 -кадам: Python жана OpenCV орнотуу

Python орнотуу абдан алдыга!

www.python.org/downloads/

Сизге эң ылайыктуу (64 бит же 32 бит) python версиясын (Mac, Windows же Linux) жүктөө үчүн жогорудагы шилтемени басыңыз. Калган орнотуу процесси жөнөкөй жана сиз интерфейс аркылуу жетектелесиз.

Орнотууну бүтүргөндөн кийин, буйрук көрсөтмөсүн ачып, төмөнкүлөрдү териңиз:

opencv-python орнотуу

Бул openCV китепканасын орнотушу керек. Кыйынчылыктар болсо, БУЛ баракты текшере аласыз.

Айлана -чөйрөнү жана бардык шарттарды койгондон кийин, биз муну кантип кура аларыбызды карап көрөлү!

2-кадам: Хаарга окшош өзгөчөлүктөр деген эмне?

Хаарга окшош өзгөчөлүктөр санариптик сүрөттүн өзгөчөлүктөрү. Аты Хаар толкундарынан келип чыккан. Бул санариптик сүрөттөгү өзгөчөлүктөрдү аныктоо үчүн колдонулган төрт бурчтуу толкундардын үй -бүлөсү. Хаар каскаддары-негизинен классификатор, ал бизге объектилерди аныктоого жардам берет (биздин учурда жүзүбүз).

Биздин учурда, жөнөкөйлүк үчүн, биз жүздөрдү аныктоо үчүн алдын ала даярдалган Haar Cascades колдонобуз. Сиз github баракчасынын БУЛ шилтемесине кирип, Haar Cascade үчүн xml файлын жүктөп алсаңыз болот.

1. 'haarcascade_frontalface_alt.xml' чыкылдатыңыз

2. Коддун терезесинин жогорку оң жагындагы 'Raw' баскычын чыкылдатыңыз.

3. Бул сизди тек гана текст менен башка баракка багыттайт.

4. Оң баскыч менен "Сактоо …" дегенди басыңыз.

5. Аны сиз жазып жаткан python кодунун каталогуна же папкасына сактаңыз.

3 -кадам: Pythonдо коддоо

cv2 импорттоо

np импорттоо катарында импорттоо

Биз керектүү китепканалардын баарын импорттойбуз.

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

Биз "ard" деп аталган сериялык объект түзөбүз. Биз ошондой эле Порт Атын жана BaudRate параметрлери катары көрсөтөбүз.

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

Биз Haar Cascade үчүн дагы бир объект түзөбүз. HaarCascade файлы ушул питон программасы менен бир папкада кала турганын текшериңиз.

vid = cv2. VideoCapture (0)

Биз веб -камерадан видео тартып турган объект түзөбүз. 0 параметр катары менин компьютериме туташкан биринчи веб -камераны билдирет.

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

чын болсо:

_, frame = vid.read ()#учурдагы кадрды өзгөрмөлүү кадрга окуйт grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#кадрды айлантат -> боз масштабдуу сүрөт#кийинки сап беттерди аныктайт. #Биринчи параметр - бул #minSize = () бетинин минималдуу өлчөмүн аныктагыңыз келген сүрөт #Каскаддын классификациясынын жүздөрү жөнүндө көбүрөөк билүү үчүн жогорудагы шилтемени басыңыз = face_cascade.detectMultiScale (боз, минСиз) = (80, 80), minNeighbors = 3) #A беттерди аныктоо үчүн цикл үчүн. үчүн (x, y, w, h) жүздөрүндө: cv2.drectangle (frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#тегерек бурчтук жүз Xpos = x+(w/2)#беттин борборунун X координатын эсептейт. Ypos = y+(h/2) #Xpos> 280 болсо, беттин борборунун Y координатын эсептейт: #Төмөнкү код блоктордун жүзүн ard.write ('L'.encode ()) #боюнча текшерет убакытка карата сол, оң, үстү же асты.уйку (0.01) #фреймдин борбору. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#кадрды өзүнчө терезеде көрсөтөт. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #if 'q' клавиатурада басылганда, ал циклден чыгат. тыныгуу

cv2.destroyAllWindows () #бардык терезелерди жабат

ard.close () #сериялык байланышты жабат

vid.release () #веб камерадан видео алууну токтотот.

4 -кадам: Arduino программалоо

Программаны өзүңүздүн муктаждыктарыңызга ылайыкташтырылган аппараттык жабдууларыңызга жараша өзгөртө аласыз.

#кошуу

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

жараксыз орнотуу () {

// орнотуу кодуңузду бул жерге коюңуз, бир жолу иштетүү үчүн: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); кечигүү (1000); }

char киргизүү = ""; // сериялык киргизүү бул өзгөрмөдө сакталат

void loop () {

// бул жерде негизги кодуңузду кайра -кайра иштетүү үчүн коюңуз: if (Serial.available ()) {// кандайдыр бир маалыматтын сериялык буфердик кириште экенин текшерет = Serial.read (); // маалыматтарды өзгөрмөгө окуйт if (input == 'U') {servoY.write (y+1); // y += 1 киришине ылайык servo бурчун тууралайт; // бурчтун маанисин жаңыртат} else if if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } киргизүү = ""; // өзгөрмөнү тазалайт} // процесс кайталанат !!:)}

5 -кадам: Жыйынтык

Бул сиздин Arduino долбоорлоруңузга Computer Vision киргизүүнү долбоорлоонун эң сонун жана интерактивдүү жолу. Computer Vision чындыгында абдан кызыктуу. Жана силерге балдар жакты деп ишенем. Ооба болсо, комментарийлерде мага билдириңиз. Жана менин ютуб каналыма жазылыңыз. Алдын ала рахмат <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Сунушталууда: