Мазмуну:

OpenCV менен Pythonдо түстү аныктоо: 8 кадам
OpenCV менен Pythonдо түстү аныктоо: 8 кадам

Video: OpenCV менен Pythonдо түстү аныктоо: 8 кадам

Video: OpenCV менен Pythonдо түстү аныктоо: 8 кадам
Video: Computer Vision with Python! Resizing Images 2024, Июль
Anonim
Image
Image

Салам! Бул көрсөтмө openCV китепканасын колдонуп, питондогу сүрөттөн белгилүү бир түстү кантип алуу керектиги үчүн колдонулат. Эгерде сиз бул техниканы жаңы колдонуп жатсаңыз, кабатыр болбоңуз, бул колдонмонун аягында сиз өзүңүздүн түс аныктоо программаңызды программалай аласыз.

Төмөндө функциялар бар же биз үйрөнө турган ыкмаларды айта алабыз, 1. Сүрөттү кантип окуу керек

2. Трек тилкелерин кантип түзүү керек

3. Трюк тилкелеринин жардамы менен Hue, Saturation жана сүрөттүн маанисин кантип тууралоо керек

4. Анан сиздин акыркы чыгарылышыңыз болот

Сиз төмөндө тиркелген чыгарманын видеосун көрө аласыз.

Ошентип, баштайлы

Жабдуулар

  • Python 3
  • openCV китепканасы
  • numpy китепканасы

1 -кадам: Китепканаларды импорттоо

Китепканаларды импорттоо
Китепканаларды импорттоо

Сүрөт көрсөтүлгөндөй сары феррари болуп саналат жана биз ал сүрөттөн сары түстү гана чыгарууну программалайбыз

Биринчи кадам биздин китепканаларды импорттоо болот

1. OpenCV китепканасын кошкондо. Бул питондо cv2 деп аталат

2. Анын ичинде numpy китепканасы np катары. "As" бизге numpy катары np катары берет, ошондуктан numpy кайра -кайра жазуунун кажети жок

2 -кадам: Трек тилкелерин түзүү

Трек тилкелерин түзүү
Трек тилкелерин түзүү

Трек тилкелери бир сүрөттөлүштөгү Hue, Saturation жана Value маанисин тууралоо үчүн түзүлгөн.

cv2.namedWindow ("TrackBars") Бул код сабы жаңы чыгаруу терезесин түзүү үчүн колдонулат жана терезенин аталышы TrackBars катары берилет (Сиз каалаган ысымды бере аласыз)

cv2.resizeWindow ("TrackBars", 600, 250) Бул функция терезенин өлчөмүн өзгөртүү үчүн колдонулат. "TrackBars" - бул кайсы терезенин өлчөмүн өзгөрткүңүз келет, анткени мен TrackBars терезесинин өлчөмүн өзгөрткүм келди, мен бул атты жаздым. Артынан эки бүтүн сан келет. Бул эки бүтүн сан туурасы жана бийиктиги. Өлчөмүн өзгөртүү үчүн ошол эки сан менен ойной аласыз

3 -кадам: Реңк, каныктыруу жана баалуулук үчүн TrackBars түзүү

Реңк, каныктыруу жана баалуулук үчүн TrackBars түзүү
Реңк, каныктыруу жана баалуулук үчүн TrackBars түзүү
Реңк, каныктыруу жана баалуулук үчүн TrackBars түзүү
Реңк, каныктыруу жана баалуулук үчүн TrackBars түзүү

Эми биз Hue, Saturation жана баалуулук үчүн жалпы 6 TrackBars түзөбүз. Ар биринде экиге, башкача айтканда, минимумга 1 жана максимумга 1 болот. Биз openCVдин createTrackbar функциясын колдонобуз. Алгач бул функциянын синтаксисин көрөбүз.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Бул түшүнүксүз болушу мүмкүн, бирок кабатыр болбоңуз, биз ар бир кадамды басып өтөбүз. OpenCVде түстүн 179, каныктыруу 255 жана мааниси 255 экенин эстен чыгарбаңыз.

1. Hack min үчүн TrackBar түзүү:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, бош)

Бул реңкте трек тилкесинин аталышы, TrackBars-негизги терезе, 0-биздин слайдерибиз турган позиция жана 179-диапазон, силдер 0-179дан жылат дегенди билдирет

2. Hack max үчүн TrackBar түзүү:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, бош)

Бул Hue maxта трек тилкесинин аты, TrackBars-негизги терезе, 179-бул биздин слайдерибиз турган позиция жана 179-максималдуу диапазон, силдер 179-0ден жылат дегенди билдирет

3. Окшош түрдө сүрөттө көрсөтүлгөндөй min min, sat max, val min жана val max үчүн кадамдарды кайталаңыз

Ак фону бар сүрөт - бул чыгаруу сүрөтү. Сиздин трек тилкелериңиз ушундай көрүнөт

4 -кадам: Сүрөттү кантип окуу жана өлчөмүн өзгөртүү

Сүрөттү кантип окуу жана өлчөмүн өзгөртүү
Сүрөттү кантип окуу жана өлчөмүн өзгөртүү

cv2.imread () сүрөттү окууга мүмкүнчүлүк берет. Бир маанилүү ой, сиз сүрөтүңүздүн жайгашкан жери программа сакталган папкада болушу керек экенин унутпашыңыз керек. Биз while циклин киргизебиз, анткени ал сүрөттү окуп бүтмөйүнчө иштеши керек же шарты туура келгенге чейин айта алабыз

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

  • Мында мен "img" деген өзгөрмөлүү ат түздүм, анда мен сүрөттү сактап жатам
  • Cv2.imread ичине кош тырмакчанын ичинде кеңейтүүсү бар сүрөттүн атын жазыңыз

Сүрөттүн өлчөмүн өзгөртүү үчүн cv2.resize функциясын колдонобуз. Бул бөлүк милдеттүү эмес, эгер сиз өлчөмүн өзгөрткүңүз келсе, анда бул функцияны колдоно аласыз

Cv2.resize ичине алгач сүрөт сакталган өзгөрмөнүн атын жазыңыз, андан кийин анын туурасы менен бийиктигин

5 -кадам: Сүрөттө колдонуу үчүн Track Bar баалуулуктарын окуу

Сүрөттү колдонуу үчүн Track Bar маанилерин окуу
Сүрөттү колдонуу үчүн Track Bar маанилерин окуу
Сүрөттү колдонуу үчүн Track Bar маанилерин окуу
Сүрөттү колдонуу үчүн Track Bar маанилерин окуу

Макул, азыр биз трек тилкесинин маанилерин окуйбуз, ошондуктан аны биздин сүрөтүбүзгө колдоно алабыз. Биз cv2.getTrackbarPos () функциясын колдонуу менен баалуулуктарды алабыз.

Ошол бөлүктөн баштайлы …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Жогорудагы билдирүүдө мен h_min өзгөрмөлүү атын түзүп жатам, анда мен Hue min маанисин сактайм. Ошентип, cv2.getTrackbarPos ичиндеги 1 -аргумент "Hue min" болмок, анткени мен hue min маанилерин каалайм (орфография createTrackbar функциясы менен бирдей болушу керек) жана 2 -аргумент ал таандык болгон трек тилкесинин терезесинин аталышы болмок.

  • Жогорудагы сүрөттө көрсөтүлгөндөй h_max жана калган функциялар үчүн ошол эле процессти кайталап, андан кийин print () аркылуу бардык баалуулуктарды басып чыгарыңыз.
  • Чыгаруу экинчи сүрөттө көрсөтүлгөн. Бул h_min, h_max, s_min, s_max, v_min, s_max маанилерин басып чыгарууда

6 -кадам: Сүрөттү көрсөтүү жана жогорку жана төмөнкү чекти коюу

Сүрөттү көрсөтүү жана жогорку жана төмөнкү чекти коюу
Сүрөттү көрсөтүү жана жогорку жана төмөнкү чекти коюу

Азыр бизде түстүн, каныкуунун жана маанинин минималдуу жана максималдуу мааниси бар, биз бул маанини сүрөттү чыпкалоо үчүн колдонобуз, андыктан биз сүрөттүн өзгөчө түсүн чыгара алабыз.

Бул үчүн cv2.inRange функциясын колдонуп маска түзөбүз. Жана ага чейин биз түстүн, каныктыктын жана маанинин жогорку жана төмөнкү чегин коёбуз

Ошентип, "төмөн" деген өзгөрмөнүн атын түзүңүз жана numpy массивинин функциясын колдонуу менен минимумдун диапазонун төмөнкүдөй орнотуңуз

төмөн = np.array ([h_min, s_min, v_min])

Ошол эле кадамды жогору үчүн кайталаңыз

жогорку = np.array ([h_max, s_max, v_max])

Эми биз масканы төмөнкүдөй түзөбүз

маска = cv2.inRange (өлчөмүн өзгөртүү, астынкы, үстүнкү) cv2.inRangдын ичинде 1 -аргумент менин акыркы сүрөтүм сакталган өзгөрмө болмок, 2 -аргумент төмөнкү чеги жана 3 -аргумент жогорку чеги болмок.

Эми биз негизги сүрөттү жана масканы көрсөтөбүз. Көрсөтүү үчүн cv2.imshow () функциясын колдонобуз

cv2.imshow ("img", өлчөмүн өзгөртүү) Бул негизги сүрөттү көрсөтүү үчүн. 1 -аргумент - бул каалаган терезеңиздин аталышы, ал эми 2 -аргумент - бул менин негизги сүрөтүм сакталып турган, өзгөргүч.

Ошо сыяктуу эле, маска үчүн кадамдарды кайталаңыз

cv2.imshow ("Чыгуу", маска)

7 -кадам: Эми акыркы кадам

Эми акыркы кадам
Эми акыркы кадам

Бул акыркы этапта биз машинанын түсүн чыгарабыз жана көрсөтөбүз.

Мен өзгөрмө ат натыйжасын түздүм. Дагы сиз каалаган ысымды бере аласыз. Ошентип, биз cv2.bitwise_and () функциясын колдонобуз, анда сүрөттөрдү бирге кошобуз жана жаңы сүрөттү түзөбүз. Жана эки сүрөттөгү пикселдер кайда болбосун, аны ооба же "1" деп кабыл алышат.

натыйжа = cv2.bitwise_and (өлчөмүн өзгөртүү, өлчөмүн өзгөртүү, маска = маска)

  • Бул жерде 1 -аргумент биздин имидж болот
  • Экинчи аргумент ошондой эле биздин баштапкы сүрөтүбүз болот, бирок андан кийин биз мурда жасаган маска колдонулат
  • Жана акыры жөн эле натыйжаны imshow функциясын колдонуп көрсөтүңүз

Бул акыркы кадамды көчүрүү жөн эле кечигүү жана клавиатурадан "а" басуу менен чыгаруу терезесинен чыга аласыз

8 -кадам: Акыркы жыйынтыктар

Сунушталууда: