Sisukord:

Värvide tuvastamine Pythonis OpenCV abil: 8 sammu
Värvide tuvastamine Pythonis OpenCV abil: 8 sammu

Video: Värvide tuvastamine Pythonis OpenCV abil: 8 sammu

Video: Värvide tuvastamine Pythonis OpenCV abil: 8 sammu
Video: Computer Vision with Python! Grayscaling Images 2024, November
Anonim
Image
Image

Tere! Seda juhendit kasutatakse selleks, et juhendada, kuidas eraldada pythonis olevast pildist konkreetne värv openCV raamatukogu abil. Kui te pole selle tehnikaga veel tuttav, siis ärge muretsege, selle juhendi lõpus saate programmeerida oma värvide tuvastamise programmi.

Järgnevalt on toodud funktsioonid või võime öelda tehnikaid, mida õpite, 1. Kuidas pilti lugeda

2. Rajaribade loomine

3. Kuidas reguleerida riba abil tooni, küllastust ja pildi väärtust

4. Ja siis on teie lõplik väljund

Saate vaadata väljundi videot, mille olen allpool lisanud.

Nii et alustame

Tarvikud

  • Python 3
  • openCV raamatukogu
  • numpy raamatukogu

Samm: raamatukogude importimine

Raamatukogude importimine
Raamatukogude importimine

Pilt on kollasest ferrarist, nagu näidatud, ja me programmeerime sellest pildist ainult kollase värvi

Esimene samm on meie raamatukogude importimine

1. Kaasa arvatud openCV raamatukogu. Pythonis nimetatakse seda cv2 -ks

2. Sealhulgas numpy raamatukogu np -na. "As" võimaldab meil numpy kui np, nii et pole vaja numpy uuesti ja uuesti kirjutada

2. samm: rajaribade loomine

Rööbastee loomine
Rööbastee loomine

Jälgribad luuakse pildi tooni, küllastuse ja väärtuse reguleerimiseks.

cv2.namedWindow ("TrackBars") Seda koodirida kasutatakse uue väljundakna loomiseks ja akna nimi on TrackBars (saate anda mis tahes soovitud nime)

cv2.resizeWindow ("TrackBars", 600, 250) Seda funktsiooni kasutatakse akna suuruse muutmiseks. "TrackBars" on selle akna jaoks, mille suurust soovite muuta, kuna ma tahtsin TrackBarsi akna suurust muuta, olen selle nime kirjutanud. Järgneb kaks täisarvu. Need kaks täisarvu on laius ja kõrgus. Suuruse muutmiseks saate nende kahe numbriga mängida

3. samm: tooni, küllastuse ja väärtuse jaoks rajaribade loomine

Trackbaride loomine tooni, küllastuse ja väärtuse jaoks
Trackbaride loomine tooni, küllastuse ja väärtuse jaoks
Trackbaride loomine tooni, küllastuse ja väärtuse jaoks
Trackbaride loomine tooni, küllastuse ja väärtuse jaoks

Nüüd loome kokku 6 rajariba tooni, küllastuse ja väärtuse jaoks. Mõlemal on kaks, st 1 minimaalselt ja 1 maksimaalselt. Kasutame openCV funktsiooni createTrackbar. Kõigepealt näeme selle funktsiooni süntaksit.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). See võib tekitada segadust, kuid ärge muretsege, me läheme iga sammu läbi. Pidage meeles ühte asja, et openCV tooni väärtused on 179, küllastus on 255 ja väärtus on 255

1. TrackBari loomine tooni min jaoks:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, tühi)

Sellel toonil min on rööbastee nimi, TrackBars on peaaken, 0 on positsioon, millel meie liugur asub, ja 179 on vahemik, mis tähendab, et silder liigub vahemikus 0–179

2. TrackBari loomine tooni max jaoks:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, tühi)

Hue max on siiniriba nimi, TrackBars on peaaken, 179 on meie liuguri asukoht ja 179 on maksimaalne vahemik, mis tähendab, et silder liigub vahemikus 179-0

3. Sarnaselt korrake samme laua min, sat max, val min ja val max jaoks, nagu pildil näidatud

Valge taustaga pilt on väljundpilt. Nii näevad teie ribad välja

Samm: pildi lugemine ja suuruse muutmine

Kuidas pilti lugeda ja selle suurust muuta
Kuidas pilti lugeda ja selle suurust muuta

cv2.imread () võimaldab pilti lugeda. Üks oluline mõte, mida peate meeles pidama, et teie pildi asukoht peab olema samas kaustas, kuhu programm salvestatakse. Lisame while -tsükli, kuna see peaks töötama seni, kuni pilt loeb, või võime öelda, kuni tingimus on tõene

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

  • Sellega olen loonud muutuja nime "img", millesse ma pildi salvestan
  • Cv2.imreadi sees kirjutage topeltjutumärgi sisse pildi nimi koos laiendiga

Pildi suuruse muutmiseks kasutame funktsiooni cv2.resize. See osa on valikuline, kui soovite suurust muuta, saate seda funktsiooni kasutada

Cv2.resize sisestage esmalt muutuja nimi, millesse pilt salvestatakse, ning seejärel selle laius ja kõrgus

5. samm. Jälgriba väärtuste lugemine pildi rakendamiseks

Jälgriba väärtuste lugemine selle rakendamiseks pildile
Jälgriba väärtuste lugemine selle rakendamiseks pildile
Jälgriba väärtuste lugemine selle rakendamiseks pildile
Jälgriba väärtuste lugemine selle rakendamiseks pildile

Olgu, nii et nüüd loeme ribariba väärtusi, et saaksime seda oma pildile rakendada. Väärtused saame funktsiooni cv2.getTrackbarPos () abil.

Alustame sellest osast…

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

Ülaltoodud avalduses loon muutuja nime h_min, millesse salvestan Hue min. Nii et cv2.getTrackbarPos'i esimene argument oleks "Hue min", sest ma tahan tooni min väärtusi (õigekiri peab olema täpselt sama, mis see on funktsioon createTrackbar) ja teine argument oleks selle riba akna nimi, kuhu see kuulub.

  • Korrake sama protsessi h_max ja ülejäänud funktsioonide jaoks, nagu on näidatud ülaltoodud pildil, ja printige seejärel kõik väärtused print () abil
  • Väljund on näidatud teisel pildil. See prindib väärtused h_min, h_max, s_min, s_max, v_min, s_max

6. samm: pildi kuvamine ning ülemise ja alumise piiri seadmine

Kujutise kuvamine ning ülemise ja alumise piiri seadmine
Kujutise kuvamine ning ülemise ja alumise piiri seadmine

Nüüd on meil tooni, küllastuse ja väärtuse min ja max väärtus, mida kasutame selle väärtuse abil pildi filtreerimiseks, et saaksime pildi konkreetse värviväljundi.

Loome selleks maski, kasutades funktsiooni cv2.inRange. Ja enne seda määrame tooni, küllastuse ja väärtuse ülemise ja alumise piiri

Seega looge muutuja nimi "madalam" ja määrake numpy array funktsiooni abil vahemik min kõigi 3 jaoks järgmiselt

madalam = np.massiiv ([h_min, s_min, v_min])

Korrake sama sammu ülemise osa jaoks

ülemine = np.massiiv ([h_max, s_max, v_max])

Nüüd loome maski järgmiselt

mask = cv2.inRange (suuruse muutmine, alumine, ülemine) Cv2.inRang sees on esimene argument muutuja, millesse minu lõplik pilt on salvestatud, teine argument on alumine piir ja kolmas argument ülemine piir.

Nüüd näitame põhipilti ja maski. Kuvamiseks kasutame funktsiooni cv2.imshow ()

cv2.imshow ("img", suuruse muutmine) See on põhipildi kuvamiseks. Esimene argument on akna nimi, millele saate anda mis tahes soovitud nime ja teine argument on muutuja, millesse on salvestatud minu põhipilt ja mida soovite kuvada.

Sarnaselt korrake maski jaoks samme

cv2.imshow ("Väljund", mask)

Samm: nüüd viimane samm

Nüüd viimane samm
Nüüd viimane samm

Selles viimases etapis eraldame auto ja ekraani värvi.

Olen loonud muutuja nime tulemuse. Jälle saate anda mis tahes soovitud nime. Seega kasutame funktsiooni cv2.bitwise_and (), milles lisame pilte koos ja loome uue pildi. Ja kõikjal, kus mõlema pildi pikslid on, on see jah või "1".

tulemus = cv2.bitwise_and (suuruse muutmine, suuruse muutmine, mask = mask)

  • Selles on esimene argument meie kuvand
  • Teine argument on ka meie algne pilt, millele järgneb varem loodud mask
  • Ja lõpuks kuvage lihtsalt tulemus, kasutades funktsiooni imshow

Lihtsalt kopeerige see viimane samm, see on vaid viivitus ja saate väljundaknast väljuda, vajutades klaviatuuril "a"

8. samm: lõplikud väljundid

Soovitan: