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

Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. 8 քայլ
Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. 8 քայլ

Video: Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. 8 քայլ

Video: Գույնի հայտնաբերում Python- ում OpenCV- ի միջոցով. 8 քայլ
Video: Javascript - Սխալների հայտնաբերում 2024, Նոյեմբեր
Anonim
Image
Image

Բարեւ Ձեզ! Այս հրահանգը օգտագործվում է այն ուղեցույցի վերաբերյալ, թե ինչպես կարելի է պիթոնում պատկերից վերցնել որոշակի գույն ՝ օգտագործելով openCV գրադարան: Եթե դուք նոր եք այս տեխնիկայում, ապա մի անհանգստացեք, այս ուղեցույցի վերջում դուք կկարողանաք ծրագրավորել ձեր սեփական գույնի հայտնաբերման ծրագիրը:

Ստորև բերված են գործառույթները կամ կարող ենք ասել տեխնիկա, որը դուք կսովորեք, 1. Ինչպես կարդալ պատկերը

2. Ինչպես ստեղծել Track Bars

3. Ինչպես կարգավորել պատկերի երանգը, հագեցվածությունը և արժեքը `օգտագործելով հետագծեր

4. Եվ հետո կլինի ձեր վերջնական արդյունքը

Դուք կարող եք դիտել ելքի տեսանյութը, որը ես կցել եմ ստորև:

Այսպիսով, եկեք սկսենք

Պարագաներ

  • Պիթոն 3
  • openCV գրադարան
  • անհանգիստ գրադարան

Քայլ 1: Գրադարանների ներմուծում

Գրադարանների ներմուծում
Գրադարանների ներմուծում

Պատկերը դեղին ferrari- ից է, ինչպես ցույց է տրված, և մենք ծրագրելու ենք այդ պատկերից հանել միայն դեղին գույնը

Առաջին քայլը կլինի մեր գրադարանների ներմուծումը

1. Ներառյալ openCV գրադարանը: Պիթոնում այն կոչվում է cv2

2. Ներառյալ numpy գրադարանը որպես np. «Որպես» -ը թույլ է տալիս մեզ թմրել որպես np, այնպես որ կարիք չկա նորից ու նորից գրել numpy

Քայլ 2. Հետագծերի ստեղծում

Հետագծերի ստեղծում
Հետագծերի ստեղծում

Հետագծի ձողերը ստեղծվում են պատկերում երանգի, հագեցվածության և արժեքի արժեքը ճշգրտելու համար:

cv2.namedWindow («TrackBars») Այս տողի ծածկագիրը օգտագործվում է նոր ելքային պատուհան ստեղծելու համար, և պատուհանի անունը տրվում է TrackBars (կարող եք տալ ցանկացած անուն, որը ցանկանում եք)

cv2.resizeWindow («TrackBars», 600, 250) Այս գործառույթը օգտագործվում է պատուհանի չափափոխման համար: «TrackBars» - ը այն պատուհանի համար է, որը ցանկանում եք չափափոխել, քանի որ ես ուզում էի չափսերի չափսերի TrackBars պատուհանը փոխել, ես գրել եմ այդ անունը: Հետևում է երկու ամբողջ թիվ: Այդ երկու ամբողջ թվերն են լայնությունը և բարձրությունը: Չափը փոխելու համար կարող եք խաղալ այդ երկու թվերի հետ

Քայլ 3. Ստեղծեք TrackBars երանգի, հագեցվածության և արժեքի համար

Ստեղծեք TrackBars երանգի, հագեցվածության և արժեքի համար
Ստեղծեք TrackBars երանգի, հագեցվածության և արժեքի համար
Ստեղծեք TrackBars երանգի, հագեցվածության և արժեքի համար
Ստեղծեք TrackBars երանգի, հագեցվածության և արժեքի համար

Այժմ մենք կստեղծենք ընդհանուր առմամբ 6 TrackBars երանգի, հագեցվածության և արժեքի համար: Յուրաքանչյուրը կունենա երկու, այսինքն ՝ 1 նվազագույնի համար և 1 առավելագույնի համար: Մենք կօգտագործենք openCV- ի createTrackbar գործառույթը: Սկզբում մենք կտեսնենք այս գործառույթի շարահյուսությունը:

cv2.createTrackbar («WINDOWNAME», «MAINWINDOWNAME», «RANGE»): Սա կարող է շփոթեցնել, բայց մի անհանգստացեք, մենք կանցնենք յուրաքանչյուր քայլի միջով: Հիշեք մի բան, որ openCV- ի երանգների արժեքները 179 են, հագեցվածությունը ՝ 255, արժեքը ՝ 255

1. Ստեղծելով TrackBar երանգի րոպեի համար.

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, դատարկ)

Այս երանգի րոպեում նշվում է trackbar- ի անունը, TrackBars- ը հիմնական պատուհանն է, 0-ը այն դիրքն է, որի վրա կլինի մեր սահիչը և 179-ը `այն միջակայքը, որը նշանակում է, որ սիլդերը կշարժվի 0-179-ից:

2. Ստեղծելով TrackBar երանգի առավելագույնի համար.

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, դատարկ)

Այս Hue max- ում նշվում է trackbar- ի անունը, TrackBars- ը հիմնական պատուհանն է, 179-ը այն դիրքն է, որի վրա կլինի մեր սահիչը և 179-ը առավելագույն միջակայքն է, ինչը նշանակում է, որ սիլդերը կտեղափոխվի 179-0-ից:

3. Նմանապես կրկնել քայլերը sat min, sat max, val min և val max- ի համար, ինչպես ցույց է տրված նկարում

Սպիտակ ֆոնով պատկերը ելքային պատկերն է: Այսպիսի տեսք կունենան ձեր հետագծերը

Քայլ 4: Ինչպես կարդալ և չափափոխել պատկերը

Ինչպես կարդալ և չափափոխել պատկերը
Ինչպես կարդալ և չափափոխել պատկերը

cv2.imread () թույլ է տալիս կարդալ պատկերը: Կարևոր մտքերից մեկը պետք է հաշվի առնել, որ ձեր պատկերի գտնվելու վայրը պետք է լինի նույն թղթապանակում, որտեղ ծրագիրը պահվում է: Մենք ներդնելու ենք while loop, քանի որ այն պետք է գործի մինչև պատկերը կարդալը կամ կարող ենք ասել, մինչև պայմանը ճշմարիտ լինի

img = cv2.imread ("ferrari.jpg")

  • Դրանում ես ստեղծել եմ «img» փոփոխական անուն, որում պահում եմ պատկերը
  • Cv2.imread- ի ներսում գրեք պատկերի անունը դրա ընդլայնմամբ `կրկնակի մեջբերումով

Պատկերը չափափոխելու համար մենք կօգտագործենք cv2.resize գործառույթը: Այս հատվածը պարտադիր չէ, եթե ցանկանում եք չափափոխել, կարող եք օգտագործել այս գործառույթը

Cv2.resize- ի ներսում նախ գրեք փոփոխականի անունը, որում պահվում է պատկերը, այնուհետև դրա լայնությունը և բարձրությունը:

Քայլ 5. Կարդացեք հետագծի արժեքները `այն պատկերի վրա կիրառելու համար

Ընթերցել Track Bar- ի արժեքները `այն պատկերի վրա կիրառելու համար
Ընթերցել Track Bar- ի արժեքները `այն պատկերի վրա կիրառելու համար
Ընթերցել Track Bar- ի արժեքները `այն պատկերի վրա կիրառելու համար
Ընթերցել Track Bar- ի արժեքները `այն պատկերի վրա կիրառելու համար

Լավ, հիմա մենք կարդալու ենք trackbar- ի արժեքները, որպեսզի կարողանանք այն կիրառել մեր պատկերի վրա: Մենք կստանանք արժեքները `օգտագործելով cv2.getTrackbarPos () գործառույթը:

Սկսենք այդ մասից…

h_min = cv2.getTrackbarPos ("Գունավոր րոպե", "TrackBars")

Վերոնշյալ հայտարարության մեջ ես ստեղծում եմ h_min փոփոխական անուն, որում կպահեմ Hue min արժեքը: Այսպիսով, cv2.getTrackbarPos- ի առաջին փաստարկը կլինի «Hue min», քանի որ ես ուզում եմ hue min- ի արժեքները (ուղղագրությունը պետք է լինի նույնը, ինչ ստեղծվում է trackTbarbar գործառույթը), իսկ երկրորդ արգումենտը կլինի trackbar պատուհանի անունը, որին այն պատկանում է:

  • Կրկնել նույն գործընթացը h_max- ի և մնացած գործառույթների համար, ինչպես ցույց է տրված վերը նկարում, այնուհետև տպել բոլոր արժեքները ՝ օգտագործելով print ()
  • Ելքը ցուցադրվում է երկրորդ նկարում: Այն տպում է h_min, h_max, s_min, s_max, v_min, s_max արժեքները

Քայլ 6. Պատկերի ցուցադրում և վերին և ստորին սահմանի սահմանում

Պատկերի ցուցադրում և վերին և ստորին սահմանների սահմանում
Պատկերի ցուցադրում և վերին և ստորին սահմանների սահմանում

Այժմ մենք ունենք երանգի, հագեցվածության և արժեքի նվազագույն և առավելագույն արժեքը: Այս արժեքը կօգտագործենք պատկերը զտելու համար, որպեսզի կարողանանք պատկերի որոշակի գունային ելքը:

Մենք դրա համար դիմակ կստեղծենք ՝ օգտագործելով cv2.inRange գործառույթը: Իսկ մինչ այդ մենք սահմանելու ենք երանգի, հագեցվածության և արժեքի վերին և ստորին սահմանը

Այսպիսով, ստեղծեք «ստորին» փոփոխականի անուն, և օգտագործելով numpy array գործառույթը, սահմանեք min- ի տիրույթը բոլոր 3 -ի համար հետևյալ կերպ

ավելի ցածր = np.array ([h_min, s_min, v_min])

Կրկնեք նույն քայլը վերին մասի համար

վերին = np.array ([h_max, s_max, v_max])

Այժմ մենք դիմակ կստեղծենք հետևյալ կերպ

դիմակ = cv2.inRange (չափափոխել, ստորին, վերին) cv2.inRang- ի ներսում 1 -ին արգումենտը կլինի այն փոփոխականը, որում պահվում է իմ վերջնական պատկերը, 2 -րդ արգումենը կլինի ստորին սահմանը, իսկ 3 -րդը `վերին սահմանը:

Այժմ մենք պատրաստվում ենք ցուցադրել հիմնական պատկերը և դիմակը: Displayուցադրելու համար մենք կօգտագործենք cv2.imshow () գործառույթը

cv2.imshow («img», չափափոխել) Սա հիմնական պատկերը ցուցադրելու համար է: Առաջին արգումենտն այն պատուհանի անունն է, որը կարող եք տալ ցանկացած անուն

Նմանապես կրկնում ենք դիմակի քայլերը

cv2.imshow («Ելք», դիմակ)

Քայլ 7: Այժմ վերջին քայլը

Այժմ Վերջնական քայլը
Այժմ Վերջնական քայլը

Այս վերջին քայլում մենք կորոշենք մեքենայի և ցուցադրման գույնը:

Ես ստեղծել եմ փոփոխականի անվան արդյունք: Կրկին կարող եք տալ ցանկացած անուն, որը ցանկանում եք: Այսպիսով, մենք կօգտագործենք cv2.bitwise_and () գործառույթը, որում մենք միասին կավելացնենք պատկերներին և կստեղծենք նոր պատկեր: Եվ որտեղ էլ որ երկու պատկերի պիքսելներն առկա լինեն, դա ընդունելու է որպես այո կամ «1»:

արդյունք = cv2.bitwise_and (չափափոխել, չափափոխել, դիմակ = դիմակ)

  • Սրանում 1 -ին փաստարկը կլինի մեր պատկերը
  • 2 -րդ փաստարկը կլինի նաև մեր սկզբնական պատկերը, որին կհետեւի կիրառված դիմակը, որը մենք ստեղծել էինք նախկինում
  • Եվ վերջապես պարզապես ցուցադրեք արդյունքը ՝ օգտագործելով ցուցադրման գործառույթը

Պարզապես պատճենեք, տեղադրեք այս վերջին քայլը, դա պարզապես ուշացում է, և դուք կարող եք դուրս գալ ելքային պատուհանից `սեղմելով« a »ստեղնաշարի վրա

Քայլ 8: Վերջնական արդյունքներ

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