Мазмұны:

Бетті бақылау құралы! Python және Arduino: 5 қадам
Бетті бақылау құралы! Python және Arduino: 5 қадам

Бейне: Бетті бақылау құралы! Python және Arduino: 5 қадам

Бейне: Бетті бақылау құралы! Python және Arduino: 5 қадам
Бейне: Самооборона для всех / Aigerim Abilkadirova/ Айгерим Абилкадирова/ самооборона для девушек 2024, Қараша
Anonim
Image
Image
Бетті бақылау құралы! Python және Arduino
Бетті бақылау құралы! Python және Arduino
Бетті бақылау құралы! Python және Arduino
Бетті бақылау құралы! Python және Arduino

By Techovator0819Менің Youtube каналымАвтордың басқа мәліметтерін қадағалаңыз:

IoT: ауа райы қорабы (арнайы дабылдар мен таймерлермен)
IoT: ауа райы қорабы (арнайы дабылдар мен таймерлермен)
IoT: ауа райы қорабы (арнайы дабылдар мен таймерлермен)
IoT: ауа райы қорабы (арнайы дабылдар мен таймерлермен)
Көп функциялы автономды робот: «актив»
Көп функциялы автономды робот: «актив»
Көп функциялы автономды робот: «актив»
Көп функциялы автономды робот: «актив»

Мен туралы: Мен жаңа нәрселер жасағанды жақсы көремін. Микроконтроллер, машина жасау, жасанды интеллект, информатика және мені қызықтыратын нәрселер сияқты. Ал сіз мұнда бәрін таба аласыз … Techovator0819 туралы толығырақ »

Барлығына сәлем, бұл нұсқаулықты оқыңыз. Бұл OpenCV деп аталатын питон кітапханасында жұмыс істейтін бетті бақылау құралы. Түйіндеме «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. Оны сіз жазатын питон кодымен бірдей каталогта немесе қалтада сақтаңыз.

3 -қадам: Python -да кодтау

cv2 импорттау

np импорттық сериялық импорт уақыты

Біз барлық қажетті кітапханаларды импорттаймыз.

ard = serial. Serial («COM3», 9600)

Біз 'ard' деп аталатын сериялық объект жасаймыз. Біз сондай -ақ порт атауын және BaudRate параметрін көрсетеміз.

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

Біз Хаар каскадына басқа объект жасаймыз. HaarCascade файлы осы python бағдарламасымен бір қалтада тұрғанына көз жеткізіңіз.

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 (сұр, minSize) = (80, 80), minNeighbors = 3) #A беттерді анықтауға арналған цикл үшін. бетіндегі (x, y, w, h) үшін: cv2.тіктөртбұрыш (кадр, (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 ()) #on екенін тексереді солға, оңға, уақытқа қатысты жоғары немесе төмен.ұйқы (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 (' кадр ', кадр)#кадрды бөлек терезеде көрсетеді. k = cv2.waitKey (1) & 0xFF егер (k == ord ('q')):: #if 'q' пернетақтада басылса, ол циклден шығады. үзіліс

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

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

vid.release () #веб -камерадан бейне қабылдауды тоқтатады.

4 -қадам: Arduino бағдарламалау

Бағдарламаны сіздің қажеттіліктеріңізге сәйкес аппараттық қондырғыларға сәйкес өзгертуге болады.

#қосу

Servo servoX;

Сервистік қызмет;

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 кірісіне сәйкес серво бұрышын реттейді; // бұрыштың мәнін жаңартады} else 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; } басқа {servoX.write (x); } енгізу = «»; // айнымалыны тазалайды} // процесс қайталана береді !!:)}

5 -қадам: Қорытынды

Бұл компьютерлік көруді Arduino жобаларына енгізуге болатын жақсы және интерактивті әдіс. Computer Vision шын мәнінде өте қызықты. Және бұл сізге ұнады деп сенемін. Егер иә болса, маған түсініктемелерде хабарлаңыз. Және менің youtube каналыма жазылыңыз. Алдын ала рахмет <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Ұсынылған: