Turinys:

Spalvų aptikimas „Python“naudojant „OpenCV“: 8 žingsniai
Spalvų aptikimas „Python“naudojant „OpenCV“: 8 žingsniai

Video: Spalvų aptikimas „Python“naudojant „OpenCV“: 8 žingsniai

Video: Spalvų aptikimas „Python“naudojant „OpenCV“: 8 žingsniai
Video: Computer Vision with Python! Resizing Images 2024, Liepa
Anonim
Image
Image

Sveiki! Ši instrukcija naudojama norint išsiaiškinti, kaip iš „python“vaizdo išgauti tam tikrą spalvą naudojant „openCV“biblioteką. Jei nesate naujokas šios technikos srityje, nesijaudinkite, šio vadovo pabaigoje galėsite užprogramuoti savo spalvų aptikimo programą.

Toliau pateikiamos funkcijos arba galime pasakyti metodus, kurių mokysitės, 1. Kaip skaityti vaizdą

2. Kaip sukurti takelius

3. Kaip koreguoti vaizdo atspalvio, sodrumo ir vertės reikšmes naudojant takelių juostas

4. Ir tada bus jūsų galutinis rezultatas

Galite žiūrėti išvesties vaizdo įrašą, kurį pridėjau žemiau.

Taigi pradėkime

Prekės

  • Python 3
  • openCV biblioteka
  • numpy biblioteka

1 veiksmas: bibliotekų importavimas

Bibliotekų importavimas
Bibliotekų importavimas

Vaizdas yra geltonos spalvos „Ferrari“, kaip parodyta, ir mes programuosime iš to vaizdo išgauti tik geltoną spalvą

Pirmasis žingsnis bus importuoti mūsų bibliotekas

1. Įskaitant „openCV“biblioteką. Python jis vadinamas cv2

2. Įskaitant numpy biblioteką kaip np. „As“leidžia mums numpy kaip np, todėl nereikia rašyti numpy vėl ir vėl

2 veiksmas: takelių juostų kūrimas

Vikšrų juostų kūrimas
Vikšrų juostų kūrimas

Kelio juostos sukurtos norint koreguoti vaizdo atspalvio, sodrumo ir vertės reikšmes.

cv2.namedWindow ("TrackBars") Ši kodo eilutė naudojama kuriant naują išvesties langą, o lango pavadinimas nurodomas kaip TrackBars (galite duoti bet kokį norimą pavadinimą)

cv2.resizeWindow ("TrackBars", 600, 250) Ši funkcija naudojama lango dydžiui pakeisti. „TrackBars“skirtas tam langui, kurio dydį norite pakeisti, nes aš norėjau pakeisti „TrackBars“lango dydį. Po to eina du sveikieji skaičiai. Šie du sveikieji skaičiai yra plotis ir aukštis. Galite žaisti su šiais dviem skaičiais, kad pakeistumėte dydį

3 žingsnis: sukurkite atspalvių, sodrumo ir vertės „TrackBars“

„TrackBars“kūrimas pagal atspalvį, sodrumą ir vertę
„TrackBars“kūrimas pagal atspalvį, sodrumą ir vertę
„TrackBars“kūrimas pagal atspalvį, sodrumą ir vertę
„TrackBars“kūrimas pagal atspalvį, sodrumą ir vertę

Dabar mes sukursime 6 „TrackBars“atspalvius, sodrumą ir vertę. Kiekvienas iš jų turės du, ty 1 minimalų ir 1 maksimalų. Mes naudosime „openCV“funkciją „createTrackbar“. Pirmiausia pamatysime šios funkcijos sintaksę.

cv2.createTrackbar („WINDOWNAME“, „MAINWINDOWNAME“, „RANGE“). Tai gali būti painu, bet nesijaudinkite, kad mes eisime per kiekvieną žingsnį. Atminkite vieną dalyką, kad „openCV“atspalvio vertės yra 179, sodrumas yra 255, o vertė yra 255

1. „TrackBar“sukūrimas min. Atspalviui:

cv2.createTrackbar („Hue min“, „TrackBars“, 0, 179, tuščias)

Šiame atspalvyje min yra sekos pavadinimas, „TrackBars“yra pagrindinis langas, 0 yra pozicija, kurioje bus mūsų slankiklis, o 179 yra diapazonas reiškia, kad silderis judės nuo 0 iki 179

2. „TrackBar“kūrimas, skirtas maksimaliam atspalviui:

cv2.createTrackbar („Hue max“, „TrackBars“, 179, 179, tuščias)

Šiame „Hue max“yra sekimo juostos pavadinimas, „TrackBars“yra pagrindinis langas, 179 yra pozicija, kurioje bus mūsų slankiklis, o 179-didžiausias diapazonas reiškia, kad silderis judės nuo 179-0

3. Panašiai pakartokite veiksmus, skirtus sat min, sat max, val min ir val max, kaip parodyta paveikslėlyje

Vaizdas su baltu fonu yra išvesties vaizdas. Taip atrodys jūsų takelių juostos

4 žingsnis: Kaip skaityti ir keisti vaizdo dydį

Kaip perskaityti ir pakeisti vaizdo dydį
Kaip perskaityti ir pakeisti vaizdo dydį

cv2.imread () leidžia skaityti vaizdą. Svarbu prisiminti vieną svarbų dalyką, kad jūsų atvaizdo vieta turi būti tame pačiame aplanke, kuriame išsaugota programa. Įdėsime ciklą „while“, nes jis turėtų veikti tol, kol bus skaitomas vaizdas, arba galime pasakyti, kol sąlyga bus teisinga

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

  • Čia sukūriau kintamąjį pavadinimą „img“, kuriame saugoju vaizdą
  • Viduje cv2.imread parašykite vaizdo pavadinimą su jo plėtiniu dvigubos kabutės viduje

Norėdami pakeisti vaizdo dydį, naudosime funkciją cv2.resize. Ši dalis yra neprivaloma, jei norite pakeisti dydį, galite naudoti šią funkciją

Viduje cv2.resize pirmiausia parašykite kintamojo pavadinimą, kuriame saugomas vaizdas, tada jo plotį ir aukštį

5 veiksmas: skaitykite takelio juostos vertes, kad pritaikytumėte vaizdą

Sekti juostos vertes, kad jos būtų pritaikytos vaizdui
Sekti juostos vertes, kad jos būtų pritaikytos vaizdui
Sekti juostos vertes, kad jos būtų pritaikytos vaizdui
Sekti juostos vertes, kad jos būtų pritaikytos vaizdui

Gerai, todėl dabar mes perskaitysime juostos juostos vertes, kad galėtume ją pritaikyti savo įvaizdžiui. Vertes gausime naudodami funkciją cv2.getTrackbarPos ().

Pradėkime nuo tos dalies…

h_min = cv2.getTrackbarPos („Hue min“, „TrackBars“)

Pirmiau pateiktame teiginyje aš sukuriu kintamojo pavadinimą h_min, kuriame išsaugosiu Hue min. Taigi cv2.getTrackbarPos viduje pirmasis argumentas būtų „Hue min“, nes aš noriu „hue min“reikšmių (rašyba turi būti visiškai tokia pati, kaip ir funkcija „createTrackbar“), o antrasis argumentas būtų sekimo lango, kuriam jis priklauso, pavadinimas.

  • Pakartokite tą patį procesą h_max ir kitoms funkcijoms, kaip parodyta aukščiau esančiame paveikslėlyje, tada atspausdinkite visas reikšmes naudodami print ()
  • Išvestis parodyta antrame paveikslėlyje. Spausdina h_min, h_max, s_min, s_max, v_min, s_max reikšmes

6 veiksmas: vaizdo rodymas ir viršutinės bei apatinės ribos nustatymas

Rodomas vaizdas ir nustatoma viršutinė ir apatinė ribos
Rodomas vaizdas ir nustatoma viršutinė ir apatinė ribos

Dabar turime minimalią ir maksimalią atspalvio, sodrumo ir vertės reikšmes, kurias naudosime norėdami filtruoti vaizdą, kad galėtume išgauti konkrečią vaizdo spalvą.

Tam sukursime kaukę naudodami funkciją cv2.inRange. Ir prieš tai mes nustatysime viršutinę ir apatinę atspalvių, sodrumo ir vertės ribas

Taigi sukurkite kintamojo pavadinimą „žemesnis“ir naudodami „numpy“masyvo funkciją nustatykite visų 3 min diapazoną taip

žemesnis = np.masyvas ([h_min, s_min, v_min])

Pakartokite tą patį žingsnį viršutiniam

viršutinė = np.masyvas ([h_max, s_max, v_max])

Dabar mes sukursime kaukę taip

kaukė = cv2.inRange (dydžio keitimas, apatinis, viršutinis) Viduje cv2.inRang 1 -asis argumentas būtų kintamasis, kuriame saugomas mano galutinis vaizdas, antrasis argumentas bus apatinė riba, o trečiasis - viršutinė riba.

Dabar parodysime pagrindinį vaizdą ir kaukę. Norėdami parodyti, naudosime funkciją cv2.imshow ()

cv2.imshow ("img", keisti dydį) Tai yra pagrindinis vaizdas. Pirmasis argumentas yra lango pavadinimas, kurį galite suteikti bet kokiam norimam pavadinimui, o antrasis argumentas yra kintamasis, kuriame saugomas mano pagrindinis vaizdas, kurį norite rodyti.

Panašiai pakartokite kaukės veiksmus

cv2.imshow („Išvestis“, kaukė)

7 žingsnis: Dabar paskutinis žingsnis

Dabar paskutinis žingsnis
Dabar paskutinis žingsnis

Šiame paskutiniame žingsnyje mes išgausime automobilio spalvą ir ekraną.

Sukūriau kintamojo pavadinimo rezultatą. Vėlgi galite duoti bet kokį norimą vardą. Taigi mes naudosime funkciją cv2.bitwise_and (), kurioje kartu pridėsime vaizdus ir sukursime naują vaizdą. Ir visur, kur yra abiejų vaizdų pikseliai, tai bus laikoma „taip“arba „1“.

rezultatas = cv2.bitwise_and (keisti dydį, keisti dydį, kaukė = kaukė)

  • Šiuo atveju 1 -asis argumentas bus mūsų įvaizdis
  • Antrasis argumentas taip pat bus mūsų originalus vaizdas, bet po to bus pritaikyta anksčiau sukurta kaukė
  • Ir galiausiai tiesiog parodykite rezultatą naudodami „imshow“funkciją

Tiesiog nukopijuokite ir įklijuokite šį paskutinį veiksmą, tai tik delsimas ir galite išeiti iš išvesties lango paspausdami klaviatūros „a“

8 žingsnis: galutiniai rezultatai

Rekomenduojamas: