Բովանդակություն:
- Քայլ 1: Վերնագրի ֆայլեր
- Քայլ 2: Տեսանյութի նկարահանում
- Քայլ 3: Շրջանակի գրավում և գույնի որոշում
- Քայլ 4: Դիմակավորում և արդյունահանում
- Քայլ 5: Վերջապես ցուցադրվում:
- Քայլ 6: Դեմո
Video: Պարզ գույնի հայտնաբերում OpenCV- ի միջոցով. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ողջու՜յն! Այսօր ես ցույց կտամ OpenCV- ի և python- ի միջոցով կենդանի տեսանյութից գույնը հայտնաբերելու մի պարզ մեթոդ:
Հիմնականում ես պարզապես կփորձեմ պահանջվող գույնի առկայությունը ֆոնային շրջանակում, թե ոչ, և OpenCV մոդուլների օգնությամբ ես կքողարկեմ այդ շրջանը և միաժամանակ կցուցադրեմ շրջանակը:
Քայլ 1: Վերնագրի ֆայլեր
Այժմ այստեղ ես օգտագործել եմ երկու վերնագրի ֆայլ ՝ cv2 և NumPy: Հիմնականում cv2- ը OpenCV գրադարանն է, որը բեռնում է բոլոր c ++ ֆայլերը, որոնք կարևոր են ծածկագրերի հրամանները օգտագործելիս (այն պարունակում է բոլոր սահմանումները):
Իսկ Numpy- ն պիթոնի գրադարան է, որն էական է բազմաչափ զանգվածը պահելու համար: Մենք կօգտագործենք մեր գունային տիրույթի կոորդինատները պահելու համար:
Եվ numpy as np- ն հիմնականում օգնում է մեր ծածկագրին մի փոքր կարճացնել ՝ ամեն անգամ np- ի փոխարեն np օգտագործելով:
Քայլ 2: Տեսանյութի նկարահանում
Սա բավականին պարզ է ՝ պիթոն օգտագործելիս: Այստեղ մենք պարզապես պետք է միացնենք տեսաձայնագրիչը, որպեսզի այն սկսի նկարահանել շրջանակները:
Այժմ VideoCapture- ի ներսում արժեքը ցույց է տալիս տեսախցիկը, իմ դեպքում տեսախցիկը միացված է նոութբուքիս, այնպես որ 0:
Երկրորդային տեսախցիկի համար կարող եք գնալ 1 -ի նման և այլն: VideoCapture- ը դրա համար ստեղծում է օբյեկտ:
Քայլ 3: Շրջանակի գրավում և գույնի որոշում
Այժմ այստեղ մենք պետք է ինչ -որ բան անենք, որպեսզի կարողանանք ֆիքսել տեսանյութի ակնթարթային շրջանակը, որը կօգնի մեզ արդյունահանել պատկերը, և մենք կարող ենք դրա վրա աշխատել ըստ պահանջի:
«while» օղակը կօգնի մեզ օղակը հասցնել մեր պահանջվող ժամանակին: Այժմ «_, frame = cap.read ()» - ը օգտագործվում է գրավված Շրջանակի վավերականությունը ստուգելու և այն պահելու համար: «cap.read () - ը բուլյան փոփոխական է և վերադարձնում է true, եթե շրջանակը ճիշտ է կարդացվում, և եթե շրջանակներ չստանաք, այն սխալ չի ցույց տա, պարզապես կստանաք Ոչ մեկը:
Այժմ տող 11 -ը և տողը 12 -ը հիմնականում սահմանում են այն գույնի շրջանակը, որը մենք պետք է հայտնաբերենք: Դրա համար ես սովոր էի կապույտ գույնին:
Կարող եք շարունակել ցանկացած գույնով, դրա համար անհրաժեշտ է պարզապես մուտքագրել BGR արժեքները տվյալ գույնի համար: Ավելի լավ է սահմանել երկու զանգված ՝ օգտագործելով անլար զանգվածները, քանի որ իրական աշխարհում որոշակի գույնի հայտնաբերումը չի ծառայի մեր նպատակին, այլ մենք կսահմանենք կապույտ գույնի մի շարք, որպեսզի այն հայտնաբերվի տիրույթի սահմաններում:
Դրա համար ես սահմանել եմ երկու փոփոխական ՝ պահպանելով ստորին BGR և վերին BGR արժեքները:
Քայլ 4: Դիմակավորում և արդյունահանում
Այժմ այստեղ գալիս է շրջանակը դիմակավորելու և շրջանակի գույնը հանելու հիմնական խնդիրը: Դիմակավորումը կատարելու համար ես օգտագործեցի OpenCV- ում գրադարանում առկա կանխորոշված հրամանները: Հիմնականում դիմակավորումը շրջանակի որոշ հատվածը հեռացնելու գործընթացն է, այսինքն ՝ մենք կհեռացնենք պիքսելները, որոնց գույնի BGR արժեքները, որոնք չեն ընկած սահմանված գույնի տիրույթում, և դա արվում է cv2.inRange- ով: Դրանից հետո, մենք դիմակավորված պատկերի վրա կիրառում ենք գունային տիրույթը `կախված պիքսելային արժեքներից և դրա համար կօգտագործենք cv2.bitwise_and. Այն պարզապես գույները կնշանակի դիմակավորված տարածքին` կախված դիմակի և գույնի տիրույթի արժեքներից:
Հղում cv2- ի համար: bitwise_and:
Քայլ 5: Վերջապես ցուցադրվում:
Այստեղ ես օգտագործել եմ հիմնական cv2.imshow () - ը ՝ յուրաքանչյուր շրջանակի համար որպես պատկեր ցուցադրելու համար: Քանի որ ես ունեմ փոփոխականների մեջ պահված շրջանակի տվյալները, ես կարող եմ դրանք վերականգնել imshow- ում (): Այստեղ ես ցուցադրել եմ բոլոր երեք շրջանակները ՝ օրիգինալ, դիմակավորված և գունավոր:
Այժմ մենք պետք է դուրս գանք while օղակից: Դրա համար մենք կարող ենք պարզապես ներդնել cv2.wait. Key (): Հիմնականում այն պատմում է սպասման ժամանակը ՝ նախքան պատասխանելը: Այսպիսով, եթե անցնեք 0 -ը, այն կսպասի անվերջ, և 0xFF- ն կասի, որ ճարտարապետությունը 64 բիթ է: «ord ()» - ը սահմանում է այն նիշը, որը սեղմելիս կկատարի if բլոկի break հրամանը և այն դուրս կգա օղակից:
Այնուհետև cap.release () - ը փակում է տեսաձայնագրիչը, իսկ cv2.destroyAllWindows () - ը փակում է բոլոր բացված պատուհանները:
Եթե որևէ խնդիր ունեք, խնդրում եմ ինձ տեղյակ պահեք:
Հղում դեպի աղբյուրի կոդ ՝
Խորհուրդ ենք տալիս:
Պարզ DIY գույնի տվիչ Magicbit- ից ՝ 5 քայլ
Պարզ DIY գույնի տվիչ Magicbit- ից. Այս ձեռնարկում մենք կսովորենք, թե ինչպես կարելի է պարզ գույնի ցուցիչ պատրաստել ՝ օգտագործելով Magicbit- ը Arduino- ի հետ:
Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. 8 քայլ
Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. Բարև: Այս հրահանգը օգտագործվում է ուղեցույց այն մասին, թե ինչպես կարելի է պիթոնում պատկերից վերցնել որոշակի գույն ՝ օգտագործելով openCV գրադարան: Եթե դուք նոր եք այս տեխնիկայում, ապա մի անհանգստացեք, այս ուղեցույցի վերջում դուք կկարողանաք ծրագրավորել ձեր սեփական գույնը
Օբյեկտի հայտնաբերում W/ Dragonboard 410c կամ 820c OpenCV- ի և Tensorflow- ի միջոցով. 4 քայլ
Օբյեկտի հայտնաբերում W/ Dragonboard 410c կամ 820c OpenCV- ի և Tensorflow- ի միջոցով. Այս հրահանգները նկարագրում են, թե ինչպես տեղադրել OpenCV, Tensorflow և մեքենայական ուսուցման շրջանակներ Python 3.5 – ի համար ՝ օբյեկտների հայտնաբերման ծրագիրը գործարկելու համար:
Ուլդարի պարզ մշակում (ուլտրաձայնային հայտնաբերում և ընդգրկում) ՝ 3 քայլ
Simple Processing Uldar (Ultrasonic Detection and Ranging). Սա պարզ նախագիծ է, որն օգտագործում է Arduino UNO- ն և Processing- ը ՝ պարզ կազմակերպում պատրաստելու համար: Lidar- ը (նաև կոչվում է LIDAR, LiDAR և LADAR) հետազոտության մեթոդ է, որը չափում է թիրախի հեռավորությունը լուսավորելով: թիրախը իմպուլսային լազերային լույսով և չափիչ
Գույնի հայտնաբերում RGB LED- ի միջոցով. 4 քայլ
Գույնի հայտնաբերում RGB LED- ի միջոցով. Երբևէ ցանկացե՞լ եք օբյեկտի գույնը հայտնաբերելու ավտոմատացված եղանակ: Փայլելով որոշակի գույնի առարկայի վրա և նայելով, թե որքան լույս է հետադարձվում, կարող եք ասել, թե ինչ գույնի է առարկան: Օրինակ, եթե կարմիր լույս եք վառում