Orodha ya maudhui:

Uso Ufuatiliaji Kifaa! Chatu na Arduino: Hatua 5
Uso Ufuatiliaji Kifaa! Chatu na Arduino: Hatua 5

Video: Uso Ufuatiliaji Kifaa! Chatu na Arduino: Hatua 5

Video: Uso Ufuatiliaji Kifaa! Chatu na Arduino: Hatua 5
Video: ДЕТИ ЛЕДИБАГ И СУПЕР-КОТА 😱 Сказки на ночь от Маринетт Miraculous Ladybug & Cat Noir in real life 2024, Julai
Anonim
Image
Image
Uso Ufuatiliaji Kifaa! Chatu & Arduino
Uso Ufuatiliaji Kifaa! Chatu & Arduino
Uso Ufuatiliaji Kifaa! Chatu & Arduino
Uso Ufuatiliaji Kifaa! Chatu & Arduino

Na Techovator0819 Channel Yangu ya Youtube Fuata Zaidi na mwandishi:

IoT: Sanduku la hali ya hewa (na Kengele za kawaida na vipima muda)
IoT: Sanduku la hali ya hewa (na Kengele za kawaida na vipima muda)
IoT: Sanduku la hali ya hewa (na Kengele za kawaida na vipima muda)
IoT: Sanduku la hali ya hewa (na Kengele za kawaida na vipima muda)
Robot ya Autonomous inayofanya kazi nyingi: 'Mali'
Robot ya Autonomous inayofanya kazi nyingi: 'Mali'
Robot ya Autonomous inayofanya kazi nyingi: 'Mali'
Robot ya Autonomous inayofanya kazi nyingi: 'Mali'

Kuhusu: Ninapenda tu kutengeneza vitu vipya. Kama vitu vinavyoshughulika na wadhibiti wadogo, uhandisi wa mitambo, Akili ya bandia, Sayansi ya Kompyuta na chochote kinachonivutia. Na hapa utapata yote… Zaidi Kuhusu Techovator0819 »

Halo kila mtu huko nje akisoma hii inayoweza kufundishwa. Hiki ni kifaa kinachofuatilia uso ambacho hufanya kazi kwenye maktaba ya chatu inayoitwa OpenCV. CV inasimama kwa 'Maono ya Kompyuta'. Kisha nikaanzisha kiolesura cha serial kati ya PC yangu na Arduino UNO yangu. Kwa hivyo hiyo inamaanisha hii haifanyi kazi tu kwenye Python.

Kifaa hiki kinatambua uso wako kwenye fremu, kisha hutuma maagizo kadhaa kwa Arduino ili kuweka kamera kwa njia ambayo inakaa ndani ya fremu! Sauti ya baridi? Wacha tuingie ndani yake basi.

Vifaa

1. Arduino UNO

2. 2 x Servo Motors (Motors yoyote ya servo itakuwa sawa lakini nilitumia Tower Pro SG90)

3. Kufunga Chatu

4. Kuweka OpenCV

5. Kamera ya Wavuti

Hatua ya 1: Kuweka Python na OpenCV

Kuweka chatu ni sawa mbele!

www.python.org/downloads/

Unaweza kufuata kiunga hapo juu kupakua toleo la chatu (Mac, windows au Linux) ambayo inakufaa zaidi (64 bit au 32 bit). Mchakato wa usakinishaji ni rahisi na utaongozwa na kiolesura.

Mara tu ukimaliza usanikishaji, fungua kidokezo chako cha amri na andika yafuatayo:

bomba kufunga opencv-chatu

Hiyo inapaswa kusanikisha maktaba ya openCV. Ikiwa kuna shida ya kupiga risasi, unaweza kuangalia ukurasa HUU.

Baada ya kuanzisha Mazingira na mahitaji yote ya kwanza, wacha tuone ni jinsi gani tunaweza kujenga hii!

Hatua ya 2: Je! Ni Sifa zipi zinazofanana na Haar?

Vipengele kama vya Haar ni sifa za picha ya dijiti. Jina linatoka kwa Haar wavelets. Hizi ni familia za mawimbi yenye umbo la mraba ambayo hutumiwa kubainisha sifa kwenye picha ya dijiti. Kasino za Haar kimsingi ni kiainishaji kinachotusaidia kugundua vitu (kwa nyuso zetu) kwa kutumia huduma kama za haar.

Kwa upande wetu, kwa unyenyekevu, tutatumia Haar Cascades zilizofunzwa mapema kutambua nyuso. Unaweza kufuata kiunga hiki cha ukurasa wa github na kupakua faili ya xml kwa Haar Cascade.

1. Bonyeza 'haarcascade_frontalface_alt.xml'

2. Bonyeza kitufe cha 'Mbichi' kwenye sehemu ya juu kulia kwenye dirisha la msimbo.

3. Itakuelekeza kwenye ukurasa mwingine na maandishi tu.

4. Bonyeza kulia na ubonyeze 'Okoa kama..'

5. Hifadhi kwenye saraka sawa au folda kama ile ya nambari ya chatu ambayo uko karibu kuandika.

Hatua ya 3: Kuandika katika Python

kuagiza cv2

kuagiza numpy kama np kuagiza muda wa kuagiza serial

Tunaingiza maktaba yote ambayo tunahitaji.

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

Tunaunda kitu cha serial kinachoitwa 'ard'. Tunataja pia Jina la Bandari na BaudRate kama vigezo.

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

Tunaunda kitu kingine kwa Cascade yetu ya Haar. Hakikisha faili ya HaarCascade inabaki kwenye folda sawa na programu hii ya chatu.

vid = cv2. Ukamataji wa Video (0)

Tunaunda kitu ambacho kinachukua video kutoka kwa kamera ya wavuti. 0 kama parameter inamaanisha kamera ya kwanza ya wavuti iliyounganishwa na PC yangu.

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

wakati Kweli:

_, frame = vid.read () # inasoma fremu ya sasa kwa fremu inayobadilika ya kijivu = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) #badilisha sura -> picha iliyotiwa grey # mstari ufuatao hugundua nyuso. #First parameter ni picha ambayo unataka kugundua kwenye # minSize = () inabainisha ukubwa wa chini wa uso kulingana na saizi #Bofya kiunga hapo juu kujua zaidi juu ya nyuso za Uainishaji wa Cascade = face_cascade.detectMultiScale (kijivu, minSize) = (80, 80), min Majirani = 3) #A kwa kitanzi kugundua nyuso. kwa (x, y, w, h) katika nyuso: cv2. mstatili (fremu, (x, y), (x + w, y + h), (255, 0, 0), 2) #chora mstatili kuzunguka uso Xpos = x + (w / 2) # huhesabu X kuratibu katikati ya uso. Ypos = y + (h / 2) # calcualtes Y inaratibu katikati ya uso ikiwa Xpos> 280: #Nambari zifuatazo zinazuia ikiwa uso ni ard.write ('L'.encode ()) #on kushoto, kulia, juu au chini kwa heshima na wakati.kulala (0.01) # katikati ya fremu. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time. ('S'encencode ()) muda.kulala (0.01) kuvunja cv2.imshow (' fremu ', fremu) #inaonyesha fremu katika dirisha tofauti. k = cv2.waitKey (1) & 0xFF ikiwa (k == ord ('q')): #if 'q' imesisitizwa kwenye kibodi, hutoka kitanzi cha wakati. kuvunja

cv2.destroyAllWindows () # inafunga windows zote

ard.close () # inafunga mawasiliano ya serial

vid.release () #acha kupokea video kutoka kwa wavuti.

Hatua ya 4: Kupanga Arduino

Jisikie huru kurekebisha programu kulingana na usanidi wa vifaa vyako kulingana na mahitaji yako.

# pamoja

Servo servoX;

Huduma ya ServoY;

int x = 90;

int y = 90;

usanidi batili () {

// weka nambari yako ya usanidi hapa, kukimbia mara moja: Serial.begin (9600); kiambatisho cha servoX (9); kushikamana na ServoY (10); andika servoX (x); andika (y); kuchelewesha (1000); }

mchango wa char = ""; // pembejeo ya serial imehifadhiwa katika tofauti hii

kitanzi batili () {

// weka nambari yako kuu hapa, kukimbia mara kwa mara: ikiwa (Serial.available ()) {// huangalia ikiwa data yoyote iko kwenye serial buffer input = Serial.read (); // inasoma data kwa kutofautisha ikiwa (pembejeo == 'U') {servoY.write (y + 1); // hurekebisha pembe ya servo kulingana na pembejeo y + = 1; // inasasisha thamani ya pembe} mwingine ikiwa (pembejeo == 'D') {servoY.write (y-1); y - = 1; } mwingine {servoY.write (y); } ikiwa (pembejeo == 'L') {servoX.write (x-1); x - = 1; } vingine ikiwa (pembejeo == 'R') {servoX.write (x + 1); x + = 1; } mwingine {servoX.write (x); } pembejeo = ""; // inafuta tofauti} // mchakato unaendelea kurudia !!:)}

Hatua ya 5: Hitimisho

Hii ni njia nzuri na maingiliano ambayo unaweza kuunda kuingiza Maono ya Kompyuta katika miradi yako ya Arduino. Maono ya Kompyuta ni ya kufurahisha kabisa. Na nina matumaini sana kwamba nyinyi mmeipenda. Ikiwa ndio, nijulishe katika maoni. Na tafadhali jiandikishe kwa idhaa yangu ya youtube. Asante mapema <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/video

Ilipendekeza: