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

OpenCV հիմնական նախագծեր. 5 քայլ
OpenCV հիմնական նախագծեր. 5 քայլ

Video: OpenCV հիմնական նախագծեր. 5 քայլ

Video: OpenCV հիմնական նախագծեր. 5 քայլ
Video: Расчет уровня вовлеченности сотрудников. Бережливое производство. 2024, Հուլիսի
Anonim
OpenCV հիմնական նախագծեր
OpenCV հիմնական նախագծեր

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

Պարագաներ

  • Python- ով աշխատող համակարգիչ
  • Բաց CV գրադարան, Numpy գրադարան, tkinter գրադարան, sys գրադարան
  • Տեսախցիկ ՝ համակարգչին միանալու համար (եթե համակարգիչն արդեն այն չունի)
  • Pyրագրի python ֆայլը (ներառված է այս հրահանգում)
  • haarcascade xml ֆայլ (ներառված է այս հրահանգում)

Քայլ 1: FaceDetect գործառույթ

FaceDetect գործառույթ
FaceDetect գործառույթ
FaceDetect գործառույթ
FaceDetect գործառույթ

Այս ֆունկցիան ցույց է տալիս ձեր տեսախցիկի տեսանյութը ՝ կանաչ քառակուսիներով, ցանկացած դեմքի վրա: Կոդում մենք օգտագործում ենք cv2. VideoCapture () ֆունկցիան ՝ պահելու համար տեսագրված տեսանյութը «գրավում» անունով օբյեկտում: CAPTURE_INDEX- ը ձեր համակարգչի կողմից սահմանված թիվ է, որը համապատասխանում է ձեր տեսախցիկի ինդեքսին համակարգչի վիդեո մուտքագրման ցուցակում: Եթե համակարգչին միացված չեք արտաքին տեսախցիկ, 0 կամ 1 -ը պետք է աշխատի:

Face_cascade օբյեկտը նախաստորագրվում է ՝ օգտագործելով cascadeClassifier գործառույթը և OpenCV github- ում հայտնաբերված «haarcascade_frontalface_default.xml» ֆայլը: Մենք օգտագործում ենք այս օբյեկտը `« դեմքեր »ցուցակում հայտնաբերված դեմքերը պահելու համար, որպես մուտք չորս կողմ, որը պահում է դեմքերը x կոորդինատ, y կոորդինատ, լայնություն և բարձրություն: Այնուհետև մենք գծում ենք ուղղանկյուն, որը կատարյալ կերպով պարուրում է դեմքը ՝ օգտագործելով cv2.rectangle գործառույթը

Այս տեսանյութից OpenCV- ն բազմաթիվ պատկերներ է գրավում մեր while loop- ում ՝ օգտագործելով capture.read () և պահելով պատկերը այն շրջանակում, որը մենք անվանել ենք «img»: Յուրաքանչյուր պատկեր այնուհետ մեկնաբանվում և փոփոխվում է այնպես, ինչպես ցանկանում ենք: FaceDetect- ի համար մենք պատկերը մոխրագույն ենք դարձնում ՝ օգտագործելով cvtColor գործառույթը, որն առաջին պարամետրում տրված պատկերը փոխակերպում է երկրորդ պարամետրում նշված պատկերի գույնի որոշակի տեսակի: Երկրորդ պարամետրի համար ընդունելի արժեքների ցանկը կարելի է գտնել առցանց: Այնուհետև պատկերը ցուցադրում ենք «Դեմքի հայտնաբերում» անունով պատուհանում ՝ օգտագործելով imshow () գործառույթը, որը տող է վերցնում պատուհանի անվան և պատկերի շրջանակի ցուցադրման համար:

Ի վերջո, մենք սպասում ենք, որ օգտագործողը մուտքագրի q բանալին `օգտագործելով cv2.waitKey () գործառույթը: 0xFF դիմակն օգտագործվում է որպես պայման 64 բիթանոց համակարգիչների համար: Տեսանյութի հոսքի ավարտից հետո faceDetect գործառույթը ազատում է գրավման օբյեկտը, այնուհետև ոչնչացնում է OpenCV ինտերֆեյսի տակ բացված այլ պատուհաններ: Մնացած բոլոր գործառույթները հետևում են նմանատիպ դիզայնի կառուցվածքին:

Քայլ 2. BackgroundRemove գործառույթը

BackgroundRemove գործառույթը
BackgroundRemove գործառույթը
BackgroundRemove գործառույթը
BackgroundRemove գործառույթը

Այս գործառույթը փորձում է հեռացնել մեր տեսանյութի ֆոնային հատվածը և թողնել միայն առաջին պլանի պատկերը: Այն կարող է չաշխատել որոշ տեսախցիկների վրա, քանի որ դրանք օգտագործում են լուսավորման ճշգրտման գործառույթը, որն ակտիվանում է, երբ տարբեր օբյեկտներ/ օջախներ մտնում են շրջանակ: Եթե ձեր backgroundRemove գործառույթը չի աշխատում, մի անհանգստացեք. Դա կարող է լինել միայն ձեր տեսախցիկը:

Այս գործառույթն օգտագործելու համար հեռացեք տեսախցիկի շրջանակից և սեղմեք «d» ստեղնը ՝ ֆոնային պատկերը գրավելու համար: Կարևոր է, որ հետին պլանում չկան շարժվող առարկաներ, որոնք ցանկանում եք գրավել: Այնուհետև մենք կարող ենք վերադառնալ տեսախցիկի շրջանակ: Եթե գործառույթն աշխատել է, օգտվողը պետք է իրեն տեսնի միայն ֆունկցիայի վիդեո հոսքում: Առջևի պատկերի ցանկացած աղմուկ/սև բլուր կարող է լինել տեսախցիկի լուսավորման ճշգրտման հետևանք: Մեկ այլ ֆոն գրավելու համար սեղմեք «r» ստեղնը ՝ նորից նախաստորագրելու համար, այնուհետև կրկին սեղմեք «d»:

Այս գործառույթի որոշ հիմնական քայլեր են «դրոշ» բուլանի օգտագործումը, որը բարձրացվում է այն պահին, երբ օգտվողը սեղմում է d կոճակը: Սա գրավում է ֆոնը և թույլ է տալիս հեռացնել այն գործառույթով հեռարձակվող տեսանյութից: Մենք նպատակ ունենք ֆոնային պատկերը պահել ref_img- ում, որպեսզի այն տարբերենք առաջին պլանի պատկերից, որը գրավում է ցանկացած շարժվող օբյեկտ: Մենք օգտագործում ենք cv2.subtract () գործառույթը ՝ հետին պլանի պատկերը հանելու համար ֆոնային պատկերից և հակառակը, այնուհետև չեղյալ հայտարարելու երկու պատկերների փոքր տարբերությունները անմիջապես հետո: Ֆոնը սեւացած է:

Fgmask- ը կատարվում է այս երկու պատկերների միջև եղած տարբերության միջոցով, այնուհետև կիրառվում է գործառույթների տեսահոսքի վրա ՝ օգտագործելով OpenCV cv2.bitwise_and () գործառույթը:

Քայլ 3: VideoEdges գործառույթը

VideoEdges գործառույթը
VideoEdges գործառույթը
VideoEdges գործառույթը
VideoEdges գործառույթը

Այս գործառույթը վերադարձնում է մեր կենդանի տեսահոլովակը, սակայն հայտնաբերելի եզրերը դառնում են սպիտակ, իսկ մնացած ամեն ինչ սևացած է: Այս գործառույթը մյուս գործառույթներից տարբերվողը մեր սկզբնական տեսանյութի փոխակերպումն է RBG ձևաչափից HSV- ի, որը նշանակում է երանգ, հագեցվածություն և տատանումներ `տեսանյութից լույսի և գույնի մշակման այլ մեթոդ: Այս մեթոդով մենք կարող ենք ավելի հեշտությամբ տարբերակել տեսանյութի ուրվագծերը `կիրառելով զտիչ (կարմիրից ցածր կարմիրից բարձր):

Canny Edge Detection- ը օգտագործվում է պատկերի եզրերը հայտնաբերելու համար: Այն ընդունում է մոխրագույն մասշտաբի պատկերը որպես մուտքագրում և օգտագործում է բազմաստիճան ալգորիթմ:

Քայլ 4: VideoBlur գործառույթ

VideoBlur գործառույթ
VideoBlur գործառույթ
VideoBlur գործառույթ
VideoBlur գործառույթ

Այս գործառույթը օգտագործվում է մեր տեսահոսքին պղտորման ազդեցություն ավելացնելու համար: Պարզ գործառույթը մեր շրջանակում կանչում է GaussianBlur cv2 գործառույթը: GaussianBlur գործառույթի մասին լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ ՝

opencv-python-tutroals.readthedocs.io/hy/l…

Քայլ 5: Բարելավումներ

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

Մենք կարող ենք օգտագործել նաև դեմքի հայտնաբերման այլ գործառույթներ, որոնք կարող են արտադրել ավելի շատ ֆունկցիոնալությամբ օբյեկտներ, քան պարզապես վերադարձող (x, y) կոորդինատները: Հավանաբար, դեմքերի ճանաչման ծրագիրը, որը կարող է հիշել դեմքերը, շատ դժվար չէր լինի իրականացնել:

Blur գործառույթը կարող է ավելի հարմարեցվել օգտվողի ինտուիտիվ կառավարման միջոցով: Օրինակ ՝ օգտատերը կարող է ցանկանալ կարգավորել պղտորման էֆեկտի ինտենսիվությունը կամ ընտրել շրջանակի ներսում որոշակի տարածք ՝ պղտորելու համար:

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