Բովանդակություն:
- Պարագաներ
- Քայլ 1: FaceDetect գործառույթ
- Քայլ 2. BackgroundRemove գործառույթը
- Քայլ 3: VideoEdges գործառույթը
- Քայլ 4: VideoBlur գործառույթ
- Քայլ 5: Բարելավումներ
Video: OpenCV հիմնական նախագծեր. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Այս նախագծում մենք ուսումնասիրում ենք OpenCV- ի որոշ հիմնական գործառույթներ 4 պարզ նախագծերի միջոցով, որոնք ներառում են ուղիղ տեսահոսք: Դրանք են ՝ դեմքի ճանաչումը, ֆոնի հեռացումը, եզրերի հատուկ տեսողական մատուցումը և կենդանի տեսահոսքի վրա պղտորման էֆեկտի կիրառումը: Այս նախագծերը փորձելու իմ հիմնական նպատակը OpenCV ինտերֆեյսով պարզապես թրջելն էր, քանի որ ծրագրում եմ ավելի խորանալ համակարգչային տեսողության ոլորտում
Պարագաներ
- Python- ով աշխատող համակարգիչ
- Բաց CV գրադարան, Numpy գրադարան, tkinter գրադարան, sys գրադարան
- Տեսախցիկ ՝ համակարգչին միանալու համար (եթե համակարգիչն արդեն այն չունի)
- Pyրագրի python ֆայլը (ներառված է այս հրահանգում)
- haarcascade xml ֆայլ (ներառված է այս հրահանգում)
Քայլ 1: 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 գործառույթը չի աշխատում, մի անհանգստացեք. Դա կարող է լինել միայն ձեր տեսախցիկը:
Այս գործառույթն օգտագործելու համար հեռացեք տեսախցիկի շրջանակից և սեղմեք «d» ստեղնը ՝ ֆոնային պատկերը գրավելու համար: Կարևոր է, որ հետին պլանում չկան շարժվող առարկաներ, որոնք ցանկանում եք գրավել: Այնուհետև մենք կարող ենք վերադառնալ տեսախցիկի շրջանակ: Եթե գործառույթն աշխատել է, օգտվողը պետք է իրեն տեսնի միայն ֆունկցիայի վիդեո հոսքում: Առջևի պատկերի ցանկացած աղմուկ/սև բլուր կարող է լինել տեսախցիկի լուսավորման ճշգրտման հետևանք: Մեկ այլ ֆոն գրավելու համար սեղմեք «r» ստեղնը ՝ նորից նախաստորագրելու համար, այնուհետև կրկին սեղմեք «d»:
Այս գործառույթի որոշ հիմնական քայլեր են «դրոշ» բուլանի օգտագործումը, որը բարձրացվում է այն պահին, երբ օգտվողը սեղմում է d կոճակը: Սա գրավում է ֆոնը և թույլ է տալիս հեռացնել այն գործառույթով հեռարձակվող տեսանյութից: Մենք նպատակ ունենք ֆոնային պատկերը պահել ref_img- ում, որպեսզի այն տարբերենք առաջին պլանի պատկերից, որը գրավում է ցանկացած շարժվող օբյեկտ: Մենք օգտագործում ենք cv2.subtract () գործառույթը ՝ հետին պլանի պատկերը հանելու համար ֆոնային պատկերից և հակառակը, այնուհետև չեղյալ հայտարարելու երկու պատկերների փոքր տարբերությունները անմիջապես հետո: Ֆոնը սեւացած է:
Fgmask- ը կատարվում է այս երկու պատկերների միջև եղած տարբերության միջոցով, այնուհետև կիրառվում է գործառույթների տեսահոսքի վրա ՝ օգտագործելով OpenCV cv2.bitwise_and () գործառույթը:
Քայլ 3: VideoEdges գործառույթը
Այս գործառույթը վերադարձնում է մեր կենդանի տեսահոլովակը, սակայն հայտնաբերելի եզրերը դառնում են սպիտակ, իսկ մնացած ամեն ինչ սևացած է: Այս գործառույթը մյուս գործառույթներից տարբերվողը մեր սկզբնական տեսանյութի փոխակերպումն է RBG ձևաչափից HSV- ի, որը նշանակում է երանգ, հագեցվածություն և տատանումներ `տեսանյութից լույսի և գույնի մշակման այլ մեթոդ: Այս մեթոդով մենք կարող ենք ավելի հեշտությամբ տարբերակել տեսանյութի ուրվագծերը `կիրառելով զտիչ (կարմիրից ցածր կարմիրից բարձր):
Canny Edge Detection- ը օգտագործվում է պատկերի եզրերը հայտնաբերելու համար: Այն ընդունում է մոխրագույն մասշտաբի պատկերը որպես մուտքագրում և օգտագործում է բազմաստիճան ալգորիթմ:
Քայլ 4: VideoBlur գործառույթ
Այս գործառույթը օգտագործվում է մեր տեսահոսքին պղտորման ազդեցություն ավելացնելու համար: Պարզ գործառույթը մեր շրջանակում կանչում է GaussianBlur cv2 գործառույթը: GaussianBlur գործառույթի մասին լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ ՝
opencv-python-tutroals.readthedocs.io/hy/l…
Քայլ 5: Բարելավումներ
Այս նախագծի ամենազգայուն գործառույթը ֆոնի հեռացման գործառույթն է, քանի որ այն պահանջում է օգտագործել տեսախցիկ, որը չունի լուսավորման ճշգրտման գործառույթ: OpenCV գրադարանում կարող են լինել ավելի լավ գործառույթներ, որոնք կարող են հաշվի առնել լուսավորման այս ճշգրտումը և սահուն հեռացնել ֆոնը (նման է կանաչ էկրանին):
Մենք կարող ենք օգտագործել նաև դեմքի հայտնաբերման այլ գործառույթներ, որոնք կարող են արտադրել ավելի շատ ֆունկցիոնալությամբ օբյեկտներ, քան պարզապես վերադարձող (x, y) կոորդինատները: Հավանաբար, դեմքերի ճանաչման ծրագիրը, որը կարող է հիշել դեմքերը, շատ դժվար չէր լինի իրականացնել:
Blur գործառույթը կարող է ավելի հարմարեցվել օգտվողի ինտուիտիվ կառավարման միջոցով: Օրինակ ՝ օգտատերը կարող է ցանկանալ կարգավորել պղտորման էֆեկտի ինտենսիվությունը կամ ընտրել շրջանակի ներսում որոշակի տարածք ՝ պղտորելու համար:
Խորհուրդ ենք տալիս:
Ինչպես պատրաստել RADAR ՝ օգտագործելով Arduino- ն գիտության համար - Լավագույն Arduino նախագծեր. 5 քայլ
Ինչպես պատրաստել RADAR ՝ օգտագործելով Arduino- ն գիտության նախագծի համար: Լավագույն Arduino նախագծեր. Բարև ընկերներ, այս ուսանելի ծրագրում ես ձեզ ցույց կտամ, թե ինչպես կատարել arduino nano- ի միջոցով կառուցված զարմանահրաշ ռադարային համակարգ: այս նախագիծը իդեալական է գիտական նախագծերի համար, և դուք կարող եք դա անել շատ ավելի քիչ ներդրումներով և հնարավորություններով, եթե մրցանակ շահելը մեծ է:
PCB- ի օգտագործմամբ ավելի լավ նախագծեր. 6 քայլ
PCB- ի օգտագործմամբ ավելի լավ նախագծեր. Եթե դուք ժամանակ եք ծախսել էլեկտրոնիկայի նախագծերի հետ աշխատելուն, ապա գիտեք, թե որքան զվարճալի և հուզիչ կարող է լինել: Ոչինչ ավելի հուզիչ չէ, քան տեսնել, թե ինչպես է քո շրջանը կյանքի կոչվում հենց քո աչքերի առաջ: Այն ավելի հուզիչ է դառնում, երբ ձեր նախագիծը վերածվում է
Հինգ կոկիկ փոքր նախագծեր. 6 քայլ
Հինգ կոկիկ փոքր նախագծեր. Սիրեք միացումներ, որոնք փայլում և աղմուկ են բարձրացնում, երբ երիտասարդներին ցուցադրում եք էլեկտրոնիկա: Այս հինգ սխեմաները, որոնց կառուցումը տևում է ընդամենը մի քանի րոպե, դրանք հեշտությամբ փոփոխվում են ՝ թարթման արագությունը կամ ժամանակը փոխելու համար: Առաջին միացումը
Էլեկտրոնային նախագծեր սկսնակների համար. 14 քայլ (նկարներով)
Էլեկտրոնային նախագծեր սկսնակների համար. Եթե էլեկտրոնիկայի մեջ մտնելու ցանկություն ունեք և այս ուսուցանելու համար տեղ ունենալու կարիք ունեք, դա ձեզ համար է: EBay- ում և Aliexpress- ում կան մի շարք շատ էժան հավաքածուներ, որոնք կարող եք ձեռք բերել 2 կամ 3 դոլարով, ինչը կարող է ձեզ որոշակի բաղադրիչ հատկություններ տալ
16x16 RGB LED վահանակ Arduino նախագծեր. 5 քայլ (նկարներով)
16x16 RGB LED վահանակ Arduino նախագծեր. Բարև բոլորին, ես տեղադրում եմ այս նախագիծը, որովհետև կցանկանայի, որ բոլորը ունենային մի պարզ վայր ՝ խաղալու այս ֆանտաստիկ 16x16 RGB LED վահանակներից մեկի հետ: Ես այլ նախագծերից վերցրել եմ գաղափարներ և փոփոխել դրանք այս նախագծի համար: Այն տալիս է ձեզ