Мазмұны:

OpenCV көмегімен Python -да түсті анықтау: 8 қадам
OpenCV көмегімен Python -да түсті анықтау: 8 қадам

Бейне: OpenCV көмегімен Python -да түсті анықтау: 8 қадам

Бейне: OpenCV көмегімен Python -да түсті анықтау: 8 қадам
Бейне: Изучение Python OpenCV / Урок #2 – Работа с изображениями и видео 2024, Шілде
Anonim
Image
Image

Сәлеметсіз бе! Бұл нұсқаулық OpenCV кітапханасын қолдана отырып, питондағы суреттен белгілі бір түсті қалай алу керектігін түсіндіру үшін қолданылады. Егер сіз бұл техниканы жаңадан білсеңіз, алаңдамаңыз, бұл нұсқаулықтың соңында сіз өзіңіздің түстерді анықтау бағдарламасын жасай аласыз.

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

2. Жолақтарды қалай құру керек

3. Реңк, қанықтылық және кескіннің мәнін жолақтарды қолдану арқылы қалай реттеуге болады

4. Содан кейін сіздің соңғы нәтижеңіз болады

Сіз төменде мен қосқан шығарылымның бейнесін көре аласыз.

Ендеше бастайық

Жабдықтар

  • Python 3
  • openCV кітапханасы
  • numpy кітапханасы

1 -қадам: Кітапханаларды импорттау

Кітапханаларды импорттау
Кітапханаларды импорттау

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

Бірінші қадам - біздің кітапханаларды импорттау

1. OpenCV кітапханасы бар. Питонда cv2 деп аталады

2. numpy кітапханасы np ретінде қосылады. «As» бізге бізге np ретінде numpy жасауға мүмкіндік береді, сондықтан 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, бос)

Бұл реңкте мин-бұл жолақ атауы, TrackBars-негізгі терезе, 0-біздің жүгірткі болатын орын және 179-бұл диапазон 0-179-дан жылжиды дегенді білдіреді

2. Максималды реңк үшін TrackBar құру:

cv2.createTrackbar («Hue max», «TrackBars», 179, 179, бос)

Бұл реңкте max-бұл жолақ атауы, TrackBars-негізгі терезе, 179-бұл біздің жүгірткі болатын орын және 179-максималды диапазон, бұл силлер 179-0-ден жылжиды.

3. Сол сияқты суретте көрсетілгендей сат min, sat max, val min және val max үшін қадамдарды қайталаңыз

Ақ фоны бар кескін - бұл шығыс бейнесі. Сіздің жолақтарыңыз осылай көрінеді

4 -қадам: Суретті қалай оқуға және өлшемін өзгертуге болады

Кескінді қалай оқуға және өлшемін өзгертуге болады
Кескінді қалай оқуға және өлшемін өзгертуге болады

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

img = cv2.imread («ferrari.jpg»)

  • Бұл мен суретті сақтайтын «img» айнымалы атын жасадым
  • Cv2.imread ішінде қос тырнақшаның ішінде кеңейтімі бар сурет атауын жазыңыз

Кескіннің өлшемін өзгерту үшін cv2.resize функциясын қолданамыз. Бұл бөлік міндетті емес, егер сіз өлшемін өзгерткіңіз келсе, онда сіз бұл функцияны пайдалана аласыз

Cv2.resize ішінде алдымен сурет сақталатын айнымалы атауды, содан кейін ені мен биіктігін жазыңыз

5 -қадам: Суретке қолдану үшін жолақ мәндерін оқу

Оны кескінге қолдану үшін жолақ мәндерін оқу
Оны кескінге қолдану үшін жолақ мәндерін оқу
Оны кескінге қолдану үшін жолақ мәндерін оқу
Оны кескінге қолдану үшін жолақ мәндерін оқу

Жарайды, енді біз жолақ жолағының мәндерін оқимыз, сондықтан оны біздің суретке қолдана аламыз. Біз мәндерді cv2.getTrackbarPos () функциясы арқылы аламыз.

Осы бөлімнен бастайық …

h_min = cv2.getTrackbarPos («Реңк мин», «TrackBars»)

Жоғарыдағы мәлімдемеде мен h_min айнымалы атын құрамын, онда мен Hue min мәнін сақтаймын. Cv2.getTrackbarPos ішіндегі 1 -ші аргумент «Hue min» болады, себебі мен реңк min мәндерін алғым келеді (емлесі createTrackbar функциясымен дәл сәйкес болуы керек) және 2 -аргумент ол тиесілі бақылау жолағы терезесінің атауы болар еді.

  • Жоғарыдағы суретте көрсетілгендей h_max және қалған функциялар үшін бірдей процесті қайталаңыз, содан кейін print () көмегімен барлық мәндерді басып шығарыңыз.
  • Шығару екінші суретте көрсетілген. Ол h_min, h_max, s_min, s_max, v_min, s_max мәндерін басып шығарады

6 -қадам: кескінді көрсету және жоғарғы және төменгі шекті орнату

Кескінді көрсету және жоғарғы және төменгі шекті орнату
Кескінді көрсету және жоғарғы және төменгі шекті орнату

Енді бізде реңктің, қанықтылық пен мәннің минималды және максималды мәні бар, біз бұл мәнді суретті сүзу үшін қолданамыз, осылайша суреттің нақты түс шығаруын жасай аламыз.

Біз бұл үшін cv2.inRange функциясын қолданып маска жасаймыз. Ал бұған дейін біз реңктің, қанықтылық пен мәннің жоғарғы және төменгі шегін орнатамыз

Сондықтан «төменгі» айнымалы атауын жасаңыз және numpy массивінің функциясын қолданып, барлық 3 үшін мин диапазонын төмендегідей орнатыңыз

төменгі = 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 -қадам: Қорытынды нәтижелер

Ұсынылған: