Съдържание:

Откриване на цвят в Python с помощта на OpenCV: 8 стъпки
Откриване на цвят в Python с помощта на OpenCV: 8 стъпки

Видео: Откриване на цвят в Python с помощта на OpenCV: 8 стъпки

Видео: Откриване на цвят в Python с помощта на OpenCV: 8 стъпки
Видео: Computer Vision with Python! Resizing Images 2024, Юли
Anonim
Image
Image

Здравейте! Тази инструкция се използва, за да ръководи как да извлечете определен цвят от изображение в python, използвайки библиотека openCV. Ако не сте нови в тази техника, не се притеснявайте, в края на това ръководство ще можете да програмирате вашата собствена програма за откриване на цвят.

Следват функциите или можем да кажем техники, които ще научите, 1. Как да прочетете изображение

2. Как да създадете ленти за следи

3. Как да регулирате стойността на Hue, Saturation и стойността на изображението с помощта на ленти за песен

4. И тогава ще има крайния резултат

Можете да гледате видеоклипа на изхода, който съм приложил по -долу.

Така че нека започнем

Консумативи

  • Python 3
  • библиотека на openCV
  • numpy библиотека

Стъпка 1: Импортиране на библиотеки

Импортиране на библиотеки
Импортиране на библиотеки

Изображението е от жълто ферари, както е показано и ние ще програмираме да извлечем само жълт цвят от това изображение

Първата стъпка ще бъде импортирането на нашите библиотеки

1. Включително библиотека openCV. Нарича се cv2 в python

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 за нюанс, наситеност и стойност

Сега ще създаваме общо 6 TrackBars за Hue, Saturation и стойност. Всеки ще има два, т.е. 1 за минимум и 1 за максимум. Ще използваме функцията createTrackbar на openCV. Първо ще видим синтаксиса на тази функция.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Това може да е объркващо, но не се притеснявайте, че ще преминем през всяка стъпка. Имайте предвид едно нещо, че в openCV стойностите на hue са 179, наситеността е 255 и стойността е 255

1. Създаване на TrackBar за hue min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, празно)

В този Hue min е името на лентата за проследяване, TrackBars е основният прозорец, 0 е позицията, на която ще бъде нашият плъзгач, а 179 е диапазонът, означаващ, че плъзгачът ще се премести от 0-179

2. Създаване на TrackBar за hue max:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, празно)

В този Hue max е името на лентата за проследяване, TrackBars е основният прозорец, 179 е позицията, на която ще бъде нашият плъзгач, а 179 е максималният обхват означава, че плъзгачът ще се премести от 179-0

3. По същия начин повторете стъпките за sat 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 ("Hue min", "TrackBars")

В горното изявление създавам име на променлива h_min, в която ще съхранявам стойността на Hue min. Така че вътре в cv2.getTrackbarPos първият аргумент ще бъде "Hue min", защото искам стойности на hue min (Правописът трябва да е точно същият, както е функцията createTrackbar), а вторият аргумент ще бъде името на прозореца на трасето, към който принадлежи.

  • Повторете същия процес за h_max и останалите функции, както е показано на горното изображение и след това отпечатайте всички стойности с помощта на print ()
  • Изходът е показан на второто изображение. Той отпечатва стойностите на h_min, h_max, s_min, s_max, v_min, s_max

Стъпка 6: Показване на изображение и задаване на горна и долна граница

Показване на изображение и настройка на горна и долна граница
Показване на изображение и настройка на горна и долна граница

Сега имаме минималната и максималната стойност на нюанса, наситеността и стойността, която ще използваме тази стойност, за да филтрираме изображението, за да можем да определим конкретния цветен изход на изображението.

Ще създадем маска за това с помощта на функцията cv2.inRange. И преди това ще зададем горната и долната граница на нюанс, наситеност и стойност

Така че създайте име на променлива "lower" и използвайте numpy array функция, задайте диапазона от min за всички 3, както следва

по -ниско = np.array ([h_min, s_min, v_min])

Повторете същата стъпка за горната част

горен = np.array ([h_max, s_max, v_max])

Сега ще създадем маска, както следва

mask = cv2.inRange (преоразмеряване, долна, горна) Вътре в cv2.inRang 1 -вият аргумент ще бъде променливата, в която се съхранява крайното ми изображение, 2 -рият аргумент ще бъде долната граница, а 3 -тият аргумент ще бъде горната граница.

Сега ще покажем основното изображение и маската. За показване ще използваме функцията cv2.imshow ()

cv2.imshow ("img", преоразмеряване) Това е за показване на основното изображение. Първият аргумент е името на прозореца, който можете да дадете каквото искате, а вторият аргумент е променлива, в която се съхранява основното ми изображение, което искате да покажете.

По същия начин повторете стъпките за маска

cv2.imshow ("Изход", маска)

Стъпка 7: Сега последната стъпка

Сега последната стъпка
Сега последната стъпка

В тази последна стъпка ще извлечем цвета на колата и дисплея.

Създадох резултат с име на променлива. Отново можете да дадете каквото искате име. Така че ще използваме функцията cv2.bitwise_and (), в която ще добавяме към изображения заедно и създаваме ново изображение. И където и пикселите в двете изображения присъстват, това ще се приеме като „да“или „1“.

резултат = cv2.bitwise_and (преоразмеряване, преоразмеряване, маска = маска)

  • В това първият аргумент ще бъде нашето изображение
  • Вторият аргумент също ще бъде оригиналното ни изображение, но последвано от приложена маска, която създадохме преди
  • И накрая просто покажете резултата с помощта на функцията imshow

Просто копирайте поставете тази последна стъпка, това е просто забавяне и можете да излезете от изходния прозорец, като натиснете „a“на клавиатурата

Стъпка 8: Крайни резултати

Препоръчано: