Բովանդակություն:

Opencv դեմքի ճանաչում. 4 քայլ
Opencv դեմքի ճանաչում. 4 քայլ

Video: Opencv դեմքի ճանաչում. 4 քայլ

Video: Opencv դեմքի ճանաչում. 4 քայլ
Video: Face recognition with python and opencv2 #python #opencv #opencv2 #opencvpython #doctorwho 2024, Նոյեմբեր
Anonim
Opencv դեմքի ճանաչում
Opencv դեմքի ճանաչում

Դեմքի ճանաչումը բավականին տարածված բան է այսօր, շատ ծրագրերում, ինչպիսիք են սմարթ հեռախոսները, բազմաթիվ էլեկտրոնային գործիքները: Այս տեսակի տեխնոլոգիան ներառում է բազմաթիվ ալգորիթմներ և գործիքներ և այլն: որն օգտագործում է որոշ ներկառուցված ներկառուցված SOC պլատֆորմներ, ինչպիսիք են Raspberry Pi- ն և բաց կոդով համակարգչային տեսլականը: գրադարաններ, ինչպիսիք են OpenCV- ն, այժմ կարող եք դեմքի ճանաչում ավելացնել ձեր իսկ կիրառական ծրագրերին, ինչպիսիք են ՝ անվտանգության համակարգերը:

Այս նախագծում ես ձեզ կասեմ, թե ինչպես կարելի է կառուցել դեմքի ճանաչում ՝ օգտագործելով Raspberry Pi- ն, և մենք օգտագործել ենք arduino+Lcd ՝ անձի անունը ցուցադրելու համար:

Քայլ 1: Ձեզ անհրաժեշտ բաներ

Ձեզ անհրաժեշտ բաներ
Ձեզ անհրաժեշտ բաներ

1. ASԵASՈՐԻ ՊԻ

2. ԱՐԴՈINԻՆՈ ՅՈOՆՈ / ՆԱՆՈ

3.16x2 lCD ISՈISՅ

4. RASPI-CAMERA / WEBcam (ավելի լավ արդյունքների համար նախընտրում եմ վեբ-տեսախցիկը)

Քայլ 2: Opencv-Intro և տեղադրում

Opencv-Intro և տեղադրում
Opencv-Intro և տեղադրում

OpenCV (բաց կոդով համակարգչային տեսողության գրադարան) շատ օգտակար գրադարան է. Այն տրամադրում է բազմաթիվ օգտակար հատկություններ, ինչպիսիք են տեքստի ճանաչումը, դեմքի ճանաչումը, օբյեկտների հայտնաբերումը, խորքային քարտեզների ստեղծումը և մեքենայական ուսուցումը:

Այս հոդվածը ցույց կտա, թե ինչպես տեղադրել Opencv և այլ գրադարաններ Raspberry Pi- ի վրա, որոնք օգտակար կլինեն օբյեկտների հայտնաբերման և այլ նախագծեր կատարելիս: Այնտեղից մենք կսովորենք, թե ինչպես կատարել պատկերի և վիդեո գործողություններ `կատարելով օբյեկտների ճանաչման և մեքենայական ուսուցման նախագիծ: Մասնավորապես, մենք կգրենք պարզ կոդ ՝ պատկերի դեմքերը հայտնաբերելու համար:

Ի՞նչ է OpenCV- ն:

OpenCV- ն բաց կոդով համակարգչային տեսողության և մեքենայական ուսուցման ծրագրային գրադարան է: OpenCV- ն թողարկվում է BSD լիցենզիայի ներքո ՝ այն դարձնելով անվճար ինչպես ակադեմիական, այնպես էլ առևտրային օգտագործման համար: Այն ունի C ++, Python և Java ինտերֆեյսեր և աջակցում է Windows, Linux, Mac OS, iOS և Android համակարգերին: OpenCV- ն նախատեսված էր հաշվողական արդյունավետության և իրական ժամանակի ծրագրերի վրա մեծ ուշադրություն դարձնելու համար:

Ինչպե՞ս տեղադրել OpenCV- ն Raspberry Pi- ի վրա:

OpenCV տեղադրելու համար մեզ անհրաժեշտ է տեղադրել Python: Քանի որ Raspberry Pis- ը նախապես բեռնված են Python- ով, մենք կարող ենք ուղղակիորեն տեղադրել OpenCV:

Մուտքագրեք ստորև բերված հրամանները `համոզվելու համար, որ ձեր Raspberry Pi- ն արդիական է և ձեր Raspberry Pi- ի տեղադրված փաթեթները թարմացնելու վերջին տարբերակներին:

sudo apt-get updatesudo apt-get upgrade

Տերմինալում մուտքագրեք հետևյալ հրամանները ՝ ձեր Raspberry Pi- ի վրա OpenCV- ի համար անհրաժեշտ փաթեթները տեղադրելու համար:

sudo apt տեղադրել libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqtcore4

Մուտքագրեք հետևյալ հրամանը ՝ ձեր Raspberry Pi- ի վրա OpenCV 3 Python 3 -ի համար տեղադրելու համար, pip3- ը մեզ ասում է, որ OpenCV- ն կտեղադրվի Python 3 -ի համար:

sudo pip3 տեղադրեք opencv-contrib-python libwebp6

Այժմ, OpenCV- ն պետք է տեղադրվի:

(եթե որևէ սխալ է տեղի ունեցել. դեռ կարող եք դա անել ՝ հետևելով ստորև բերված հղմանը

https://www.instructables.com/id/Raspberry-Pi-Hand…)

Հիմա մի շտապեք, մենք պետք է ստուգենք ՝ այն ճիշտ տեղադրված է, թե ոչ

Փորձարկեք ձեր opencv- ն ՝

1. Գնացեք ձեր տերմինալ և typr "python"

2. ապա մուտքագրել «ներմուծել cv2»:

3. ապա մուտքագրեք «cv2._ տարբերակ_»:

ապա տեղադրել այս գրադարանները

pip3 տեղադրել python-numpy

pip3 տեղադրել python-matplotlib

Պատկերի դեմքերը հայտնաբերելու համար փորձարկման կոդ

ներմուծել cv2

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml");

image = cv2.imread («ձեր ֆայլի անունը») #օրինակ cv2.imread («home/pi/Desktop/filename.jpg»)

արդյունքը կստանաք այնպես, ինչպես քառակուսի տուփեր են ձևավորվել նկարում պատկերված մարդկանց դեմքերին:

Քայլ 3. Իրական ժամանակի տեսանյութում դեմքի հայտնաբերում և ճանաչում

ներմուծել cv2

ներմուծել numpy որպես np

ներմուծել os

ներմուծման սերիա

ser = serial. Սերիալ ('/dev/ttyACM0', 9600, timeout = 1) #/dev/ttyACM0- ը կարող է փոխվել ձեր դեպքում, կախված է arduino- ից

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier (cascadePath)

ճանաչող = cv2.face.createLBPHFaceRecognizer ()

պատկերներ =

պիտակներ =

os.listdir ('Տվյալների հավաքածու') ֆայլի անվան համար

im = cv2.imread ('Տվյալների հավաքածու/'+ֆայլի անուն, 0)

images.append (im)

labels.append (int (filename.split ('.') [0] [0]))

#տպել ֆայլի անունը

names_file = բաց ('labels.txt')

անուններ = names_file.read (). պառակտում ('\ n')

ճանաչող. գնացք (պատկերներ, np.array (պիտակներ))

տպել 'Ուսուցումն ավարտված է:.. '

տառատեսակ = cv2. FONT_

HERSHEY_SIMPLEXcap = cv2. VideoCapture (1) # ձեր տեսասարքը

lastRes = "" հաշվարկ = 0

մինչդեռ (1):

_, շրջանակ = cap.read ()

մոխրագույն = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2GRAY)

դեմքեր = faceCascade.detectMultiScale (մոխրագույն, 1.3, 5)

հաշվել+= 1

(x, y, w, h) դեմքերի համար

cv2. ուղղանկյուն (շրջանակ, (x, y), (x+w, y+h), (255, 0, 0), 2)

եթե հաշվել> 20: res = անուններ [ճանաչող. կանխատեսել (մոխրագույն [y: y+h, x: x+w])-1]

եթե res! = lastRes:

lastRes = res

տպել lastRes

ser.write (lastRes)

հաշվել = 0

ընդմիջում

cv2.imshow («շրջանակ», շրջանակ)

k = 0xFF & cv2.wait բանալին (10)

եթե k == 27:

ընդմիջում

cap.release ()

ser.close ()

cv2.destroyAllWindows ()

Քայլ 4: Գործարկեք ծածկագիրը

Գործարկելով ծածկագիրը
Գործարկելով ծածկագիրը

1. Ներբեռնեք նախորդ քայլին կցված ֆայլերը

2. պատճենեք ձեր մոխրագույն լուսանկարները (6 պատկեր/ նմուշ…..) ձեր տվյալների պանակում

1. Tom Cruise 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (տվյալների հավաքածուի պատկերը ավելի բաց տվյալների պանակի համար)

2. Բրեդ Փիթ -2-1, 2_2, 2_3, 2_4, 2_5, 2_6

3. Առյուծ -3_1, 3_2, 3_3, 3_4, 3_5, 3_6

4. Ironman4_1, 4_2, 4_3, 4_4, 4_5, 4_6

ինչպես վերը նշվածը, կարող եք ավելացնել պիտակներ համապատասխան անձանց համար,

Այսպիսով, եթե pi- ն հայտնաբերում է որևէ դեմք 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 միջև, ապա այն պիտակավորված է որպես Թոմ Քրուզ, ուստի խնդրում ենք զգույշ լինել լուսանկարները բեռնելիս ………………

ապա միացրեք ձեր arduino- ն ձեր ազնվամորի Pi- ին և փոփոխություններ կատարեք main.py codeser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 1) 3. մուտքագրեք բոլոր ներբեռնված ֆայլերը (main.py, տվյալների պանակ), haarcascade_frontalface_default.xml մեկ թղթապանակում:)

3. Այժմ բացեք Raspi- տերմինալը, գործարկեք ձեր կոդը «sudo python main.py»-ի միջոցով

Խորհուրդ ենք տալիս: