- Mitä kuvat ovat?
- Kuinka tietokone tallentaa kuvia
- Miksi koneen on vaikea tunnistaa kuvia
- OpenCV: n sovellus ja käyttö
- OpenCV: n asentaminen Pythonin ja Anacondan kanssa
- Kuvien avaaminen ja tallentaminen OpenCV: ssä
- Harmaa skaalauskuva OpenCV: ssä
- Väriavaruudet
- RGB-kuvan yksittäisten komponenttien tutkiminen
- Muunnetaan kuva yksittäiseksi RGB-komponentiksi
- Kuvan histogrammiesitys
- Kuvien ja muotojen piirtäminen OpenCV: llä
Taide on tapa nähdä, ja heidän mukaansa näkeminen on uskomista, mutta päinvastoin on totta, uskoa on näkemistä ja on todella vaikea kuvitella elävänsä tässä maailmassa ilman näön lahjaa - silmämme, kuinka hienoa on olla lapsi kun silmämme vain avautuvat, näemme maailman ja aloimme tunnistaa ja nähdä ympäröivän maailman, mutta ajan myötä samasta upeasta kokemuksesta tulee arkipäiväinen. Mutta samalla kun etenemme tekniikan kanssa, olemme partaalla, jossa koneet pystyvät myös näkemään ja ymmärtämään sitä. Tällä hetkellä se ei näytä olevan scifi, jos vain avaat puhelimesi lukituksen kasvoillasi, mutta tarina konenäön kehityksestä on päivätty jo yli 20 vuoteen.
Ensimmäinen muodollinen askel tällä alalla otettiin takaisin vuonna 1999 Intel-aloitteessa, jolloin kaikki meneillään olevat tutkimukset tehtiin yhteistyössä alun perin C ++: lla kirjoitetun OPEN CV: n (avoimen lähdekoodin tietokonenäkö) kanssa. vuonna 2009, kolmas vuonna 2015 ja neljäs juuri vuonna 2018. Nyt OpenCV: llä on C ++ -, Python- ja Java-liitännät ja se tukee Windowsia, Linuxia, Mac OS: ää, iOS: ää ja Androidia. Joten se voidaan helposti asentaa Raspberry Pi -ohjelmaan Python- ja Linux-ympäristössä. Ja Raspberry Pi -ohjelmaa, jossa on OpenCV ja liitetty kamera, voidaan käyttää luomaan monia reaaliaikaisia kuvankäsittelysovelluksia, kuten kasvojentunnistus, kasvojen lukitus, esineiden seuranta, auton rekisterikilven tunnistus, kodin turvajärjestelmä jne.
Ennen kuin opit kuvankäsittelystä openCV: n avulla, on tärkeää tietää, mitkä kuvat ovat ja miten ihmiset ja koneet havaitsevat nämä kuvat.
Mitä kuvat ovat?
Kuvat ovat kaksiulotteinen esitys näkyvän valon spektristä. Ja näkyvä valospektri on vain osa sähkömagneettista spektriä, joka sijaitsee siellä infrapuna- ja ultraviolettispektrin välillä.
Kuinka kuvat muodostuvat: - kun valo heijastuu esineestä kalvolle, anturille tai verkkokalvolle.
Näin silmämme toimivat, käyttämällä estettä useimpien valopisteiden estämiseksi, jolloin pieni aukko, jonka läpi valo voi kulkea, kutsutaan aukoksi, ja se muodostaa paljon tarkennetun kuvan ja on toimiva malli piikkikameralle, mutta piikkireikäisessä kamerassa on ongelma, että sama määrä valoa tulee aukkoon, mikä ei voisi olla sopiva muodostetulle filmille tai kuvalle, emmekä voi saada tarkennettua kuvaa, jotta voimme tarkentaa kuvan täytyy siirtää elokuvaa edestakaisin, mutta tämä on ongelmallista monissa tilanteissa.
Tai voimme korjata tämän ongelman käyttämällä linssejä, se antaa meille mahdollisuuden hallita aukon kokoa, ja valokuvauksessa sen tunnetaan nimellä f Stop, yleensä pienempi arvo f Stop on parempi valokuvauksessa.
Aukon koon ansiosta pääsemme myös mukavaan syväterävyyteen, jota kutsutaan Bokehiksi valokuvauksessa, se antaa meille mahdollisuuden hämärtää taustaa, kun keskitymme kuvaan.
Kuinka tietokone tallentaa kuvia
Olet ehkä kuullut erilaisista kuvamuodoista, kuten.png,.jpgG ja niin edelleen. Kaikki tämä on analogisen maailmamme digitaalinen esitys, tietokoneet tekevät sen kääntämällä kuvan digitaalikoodiksi tallennusta varten ja tulkitsemalla sitten tiedoston takaisin näyttö. Mutta perusasioissa he käyttävät yhteistä alustaa kuvien tallentamiseen, ja sama pätee openCV: hen.
OpenCV käyttää RGB (punainen, vihreä ja sininen) väriavaruuden oletuksena sen kuvia, jossa jokainen pikseli koordinaatti (x, y) sisältää 3 arvot vaihtelevat varten voimakkuudet 8-bittinen muoto eli (0-255, 2 8).
Kunkin värin eri intensiteettien sekoittaminen antaa meille täyden spektrin, siksi maalauksessa tai taiteessa näitä kolmea väriä pidetään pääväreinä ja kaikkia muita toissijaisina, koska päävärit voivat muodostaa suurimman osan toissijaisista väreistä. Kuten keltaisella, meillä on seuraavat arvot: Punainen - 255; Vihreä - 255; Sininen - 0.
Nyt kuvat on tallennettu moniulotteisiin ryhmiin. Ohjelmoinnissa array on joukko esineitä. Ja tässä käsitellään kolmen tyyppisiä taulukoita 1D, 2D ja 3D, joissa 'D' tarkoittaa dimensiota.
Värilliset kuvat tallennetaan kolmiulotteisiin matriiseihin, joissa kolmannet mitat edustavat RGB-värejä (jotka näemme myöhemmin), ja yhdessä ne muodostavat eri pikselien intensiteetit kuvalle, kun taas mustavalkoiset kuvat tallennetaan kaksiulotteisiin ryhmiin ja myös mustavalkoisia kuvia on harmaasävyisiä ja binaarikuvia.
Harmaasävykuvat ovat muodoltaan kaksiulotteisen taulukon harmaan sävyjä, kun taas binaarikuvat ovat joko mustia tai valkoisia pikseleitä.
Miksi koneen on vaikea tunnistaa kuvia
Tietokonenäkö on itsessään haastava tehtävä, voit itse kuvitella, kuinka vaikeaa on antaa koneelle näkemys, tunnustus ja tunnistaminen. Seuraavat tekijät tekevät tietokoneen visiosta niin vaikean.
- Kamera-anturin ja objektiivin rajoitukset
- Näkökulman muunnelmat
- Valaistuksen muuttaminen
- Skaalaus
- Okkluusiot
- Objektiluokan muunnelmat
- Epäselvät kuvat / optiset harhat
OpenCV: n sovellus ja käyttö
Vaikeudesta huolimatta Computer Visionilla on monia menestystarinoita
- Robottinavigointi - itse ajavat autot
- Kasvojentunnistus ja -tunnistus
- Hakukoneen kuvahaku
- Rekisterikilven lukeminen
- Käsinkirjoituksen tunnistus
- Snapchat- ja kasvosuodattimet
- Kohteen tunnistus
- Pallo- ja pelaajaseuranta urheilussa
- Ja paljon muuta!
OpenCV: n asentaminen Pythonin ja Anacondan kanssa
OpenCV on kirjoitettu C ++: lla, mutta sen toteuttaminen C ++: lla on erittäin vaikeaa, ja siksi päätämme toteuttaa sen korkean tason kielellä pythonina, ja OpenCV: n toteuttamisesta pythonilla on myös lisäetuja, koska Python on yksi helpoimmista kielistä myös aloittelijoille Se on erittäin tehokas datatieteelle ja koneoppimissovelluksille, ja se tallentaa kuvia myös numpy-ryhmiin, mikä antaa meille mahdollisuuden tehdä erittäin tehokkaita toimintoja melko helposti.
Perusohjelmointi on hyödyllistä Exposure to High School Level Math -verkkokameran, verkkokameran, Python 2.7: n tai 3.6: n kanssa (suositeltava on Anaconda-paketti).
Vaihe 1. Lataa ja asenna Anaconda Python -paketti
Siirry osoitteeseen https://www.anaconda.com/download ja valitse koneesi mukaan sen Windows-, Linux- tai Mac-tietokoneiden mukaan ja voit valita joko Python 2.7- tai Python 3.7 -versiolle joko 64- tai 32-bittiset järjestelmät, mutta nyt päivässä suurin osa järjestelmästä on 64-bittinen.
Pythonin Anaconda-jakelu tulee Spyder-studion, Jupyter-muistikirjojen ja Anaconda-kehotteen kanssa, mikä tekee pythonista erittäin ystävällisen käyttää. Käytämme spyder-studiota esimerkkien tekemiseen.
Valinta python 2.7: n tai 3.7: n välillä on täysin neutraali, mutta esimerkeissä käytämme python 3.7: ää, koska se on pythonin tulevaisuus ja otamme haltuunsa python 2.7: n vuonna 2020, myös suurinta osaa kirjastoista kehitetään python 3.7: ssä pythonin tulevaisuuden näkökulma mielessä. Lisäksi se antaa odotetut tulokset matemaattisista perustoiminnoista, kuten (2/5 = 2,5), kun taas python 2.7 arvioi sen arvoksi 2. Tulostusta käsitellään myös python 3.7: n funktiona (tulosta ("hei")), joten se antaa käytännön ohjelmoijille.
Vaihe 2. Virtuaalialustan luominen OpenCV: llä
Aiomme asentaa OpenCV: n luomalla virtuaalisen alustan spyderille käyttämällä Anaconda-kehotetta ja tähän ladattua YML-tiedostoa.
YML-tiedostoilla asennamme kaikki tarvittavat paketit ja kirjastot, mutta jos kuitenkin haluat asentaa muita paketteja, voit asentaa ne helposti anaconda-kehotteen kautta suorittamalla kyseisen paketin komennon.
Siirry Windowsin hakukuvakkeeseen ja etsi anaconda-kehote, jonka löydät juuri asentamastasi anaconda-kansiosta.
Sitten sinun on löydettävä ladattu YML-tiedosto, ja tästä lähtien sinulla on kaksi vaihtoehtoa joko vaihtaa päätelaitteesi hakemisto sijaintiin, johon YML-tiedostosi ladataan, tai joko kopioida YML-tiedostosi hakemistoon, johon anaconda on asennettu eniten tapauksissa se olisi C: \ -aseman sisällä, kun olet kopioinut YML-tiedostosi määritettyyn sijaintiin, suorita seuraava komento kehotteessasi
conda env luo –f virtual_platform_windows.yml
Koska järjestelmäni on käynnissä Windowsissa, YML-tiedosto ja komento vastaavat ikkunoita, mutta voit muokata järjestelmääsi korvaamalla Windows linuxilla tai macilla.
Huomaa: - Jos paketin purkaminen aiheuttaa virheen, asenna ensin pytorch ja numpy ja suorita sitten yllä oleva komento.
Etsi nyt anaconda-navigaattori ja avattavasta valikosta tulee “Applications on ___” ja valitse sitten virtuaalinen ympäristö ja sieltä sinun on käynnistettävä Spyder studio.
Ja siinä kaikki, olet valmis aloittamaan!
Kuvien avaaminen ja tallentaminen OpenCV: ssä
Tässä selitämme joitain peruskomentoja ja terminologiaa Pythonin käyttämiseksi OpenCV: ssä. Opimme kolmesta OpenCV imread-, imshow- ja imwrite-perustoiminnosta.
#kommentit pythonissa annetaan # -merkillä
Tuo opencv pythonissa komennolla
tuo cv2
Lataa kuva käyttämällä "imread" -asetusta, joka määrittää kuvan polun
image = cv2.imread ('input.jpg')
Nyt tämä kuva ladataan ja tallennetaan pythoniin muuttujana, jonka nimeimme kuvaksi
Kuvamuuttujamme näyttämiseksi käytämme nyt 'imshow' ja ensimmäinen parametri imshow-toiminnolle on kuvaikkunassa näkyvä otsikko, ja se on syötettävä kohtaan '' 'edustamaan nimeä merkkijonona
cv2.imshow ('hei maailma', kuva)
waitkey antaa meille mahdollisuuden syöttää tietoja, kun kuvaikkuna on auki, jättämällä sen tyhjäksi, se vain odottaa minkä tahansa avaimen painamista ennen jatkamista. Sijoittamalla numerot (paitsi 0) voimme määrittää viiveen kuinka kauan pidät ikkunaa auki millisekunteina tässä).
cv2.waitKey ()
'destrAllWindows' sulkee kaikki avoimet ikkunat, jos tämän asettamatta jättäminen aiheuttaa ohjelman jumittumisen.
cv2.destroyAllWindows ()
, tähän käytämme numpy, numpy on kirjasto python-ohjelmointiin tuen lisäämiseksi suuriin moniulotteisiin matriiseihin.
import cv2 #importing numpy tuoda numpy nimellä np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) #shape -toiminto on erittäin hyödyllinen, kun tarkastelemme matriisin mittoja , se palauttaa dupleksin, joka antaa ulottuvuuden kuvatulostukselle (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
konsolin ulostulo - (183, 275, 3), Kuvan kaksi ulottuvuutta ovat 183 pikseliä ja 275 pikseliä. 3 tarkoittaa, että on kolme muuta komponenttia (R, G, B), jotka tekevät tämän kuvan (se näyttää että värilliset kuvat on tallennettu kolmiulotteisiin ryhmiin).
tulosta ('Kuvan korkeus:', (image.shape, 'pixels')) print ('Kuvan leveys:', (image.shape, 'pixels'))
konsolin ulostulo - kuvan korkeus: (183, 'pikseliä')
Kuvan leveys: (275, 'pikseliä')
Muokatun kuvan tallentaminen OpenCV: hen
Käytämme 'imwrite' määrittelemään tallennettavan tiedostonimen ja kuvan.
cv2.imwrite ('output.jpg', kuva) cv2.imwrite ('output.png', kuva)
Ensimmäinen argumentti on tiedoston nimi, jonka haluat tallentaa, {lukea tai tallentaa tiedosto, jota käytämme ('') osoittamaan sen merkkijonona} ja toinen argumentti on tiedoston nimi.
OpenCV: n avulla voit tallentaa kuvan eri muodoissa.
Harmaa skaalauskuva OpenCV: ssä
Harmaasävy on prosessi, jolla kuva muunnetaan täysväristä harmaan sävyiksi (mustavalkoinen)
Opencv: ssä monet toiminnot näkyvät kuvissa harmaasävyinä ennen käsittelyä. Tämä tehdään, koska se yksinkertaistaa kuvaa, toimii melun meluna ja vähentää käsittelyaikaa, koska kuvassa on vähemmän tietoa (koska harmaasävykuvat tallennetaan kaksiulotteisiin ryhmiin).
tuo cv2 # lataa syötekuva image = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # käytämme cvtcolor-tiedostoa muunnettavaksi harmaasävyksi harmaa_image = cv2.cvtColor (kuva, cv2.COLOR_BGR2GRAY) cv2.imshow ('harmaasävy', harmaa_kuva) cv2.waitKey () cv2.destroyALLWindows ()
Yksinkertaisempi tapa muuntaa kuva harmaasävyksi on lisätä vain argumentti 0 lukemattomassa funktiossa sivuun kuvan nimeen
tuo cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('harmaasävy', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
tuo cv2 tuoda numerotiedosto np image = cv2.imread ('input.jpg') tulosta (image.shape) cv2.imshow ('alkuperäinen', kuva) cv2.waitKey () grey_image = cv2.cvtColor (kuva, cv2.COLOR_BGR2GRAY) cv2.imshow ('harmaasävy', harmaa_kuva) tulosta (harmaa_kuva.muoto) cv2.waitKey () cv2.destroyALLWindows ()
Konsolin ulostulo: - (183, 275, 3) - värilliselle kuvalle
(183, 275) - harmaasävykuva
Siksi se osoittaa selvästi, että värillisiä kuvia edustavat kolmiulotteiset taulukot, kun taas harmaasävykuvat ovat kaksiulotteisia taulukoita.
Väriavaruudet
Väriavaruudet ovat tapaa, jolla kuvat tallennetaan. RGB, HSV, CMYK ovat eri väriavaruudet, nämä ovat vain yksinkertaisia tapoja edustaa väriä.
RGB - punainen, vihreä ja sininen.
HSV - sävy, kylläisyys ja arvo.
Ja CMYK käytetään yleisesti mustesuihkutulostimien.
RGB- tai BGR-väriavaruus
OpenCV: n oletusväriavaruus on RGB. RGB on lisävärimalli, joka tuottaa värejä yhdistämällä sinisiä, vihreitä ja punaisia värejä eri kirkkaudella. OpenCV: ssä käytämme 8-bittisiä värisyvyyksiä.
- Punainen (0-255)
- Sininen (0-255)
- Vihreä (0-255)
Kuitenkin OpenCV oikeastaan tallentaa väriä BGR muodossa.
Hauska tosiasia: - Käytämme BGR-järjestystä tietokoneissa johtuen siitä, kuinka 32-bittiset kokonaisluvut ovat tallentamattomia muistiin, se lopulta tallennetaan RGB-muodossa. Väriä edustava kokonaisluku, esimerkiksi: - 0X00BBGGRR, tallennetaan muodossa 0XRRGGBB.
HSV-väriavaruusHSV (sävy, kylläisyys ja arvo / kirkkaus) on väriavaruus, joka yrittää edustaa värejä, jotka ihmiset kokevat sen. Se tallentaa väritiedot sylinterimäisessä muodossa RGB-väripisteitä.
Sävy - väriarvo (0-179)
Värikylläisyys - Värin värinä (0-255)
Arvo - kirkkaus tai voimakkuus (0-255)
HSV-väriavaruusformaatti on hyödyllinen värien segmentoinnissa. RGB: ssä tiettyjen värien suodattaminen ei ole helppoa, mutta HSV helpottaa värialueiden asettamista tiettyjen värien suodattamiseksi sellaisina kuin ne havaitsemme.
Sävy edustaa väriä HSV: ssä, sävyn arvo vaihtelee välillä 0 - 180 eikä 360, joten se ei ole täydellinen ympyrä, joten se on kartoitettu eri tavalla kuin vakio.
Värialueen suodattimet
- Punainen - (165-15)
- Vihreä - (45-75)
- Sininen - (90-120)
Koska tiedämme, että kuvat tallennetaan RGB (punainen, vihreä ja sininen) -väritilaan ja niin OpenCV näyttää meille saman, mutta ensimmäinen asia, joka on muistettava opencv: n RGB-muodosta, on se, että se on itse asiassa BGR ja voimme tietää sen katsomalla kuvan muoto.
tuo cv2 tuoda numerotiedosto np image = cv2.imread ('input.jpg') # B, G, R-arvo ensimmäiselle 0,0 pikselin B, G, R = kuvapainatukselle (B, G, R) (kuva.shape) # nyt, jos otamme tämän käyttöön harmaasävykuvassa harmaa_img = cv2.cvtColor (kuva, cv2.COLOR_BGR2GRAY) tulosta (harmaa_img.muoto) #harmaa_kuvakokoarvo 10,50 kuvapistettä (harmaa_img)
Konsolin ulostulo: tulosta (B, G, R) - 6 11 10
tulosta (image.shape) - (183, 275, 3)
painatus (harmaa_kuvakoko) - (183, 275)
painatus (harmaa_img) - 69
Harmaasävykuvassa on nyt vain kaksi ulottuvuutta, koska muistamme, että värikuva on tallennettu kolmeen ulottuvuuteen, kolmas ulottuvuus on (R, G, B), kun taas harmaasävyissä on vain kaksi ulottuvuutta, koska (R, G, B) puuttuu ja tietylle pikseliasemalle saadaan vain yksi arvo, kun taas värillisessä kuvassa kolme arvoa.
Toinen hyödyllinen väriavaruus on HSV
tuo cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (image, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2. imshow ('saturation channel', hsv_image) cv2.imshow ('value channel', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Koodin suorittamisen jälkeen näet neljä kuvaa, joista kolme on yksittäisistä kanavista ja yksi on yhdistetty HSV-kuva.
Sävykanavakuva on melko tumma, koska sen arvo vaihtelee vain 0: sta 180: een.
Huomaa myös, että imshow- toiminto yrittää näyttää sinulle RGB- tai BGR-kuvan, mutta HSV-muunnos limittää sen.
Arvokanava on myös samanlainen kuin kuvan harmaasävy sen kirkkauden vuoksi.
RGB-kuvan yksittäisten komponenttien tutkiminen
tuo cv2 image = cv2.imread ('input.jpg') # opencv: n jaettu toiminto jakaa kuvan jokaisen väriindeksin B, G, R = cv2.split (kuva) cv2.imshow ("Punainen", R) cv2.imshow ("Vihreä", G) cv2.imshow ("Sininen", B) # Alkuperäisen kuvan tekeminen yhdistämällä yksittäiset värikomponentit yhdistetty = cv2.merge () cv2.imshow ("yhdistetty", yhdistetty) # sinisen värin vahvistaminen yhdistetty = cv2.merge () cv2.imshow ("yhdistetty siniseen vahvistimeen", yhdistetty) # edustaa yksittäisten värikomponenttien muotoa. # ulostulo on vain kaksi ulottuvuutta, jotka olisivat korkeutta ja leveyttä, koska RGB-komponentin kolmas elementti on erikseen esitetty painatus (B.-muoto) tuloste (R.muoto) tulosta (G.muoto) cv2.waitKey (0) cv2.destroyAllWindows ()
Konsolilähtö: #dimensions of picture from shape function
(183, 275)
(183, 275)
(183, 275)
Muunnetaan kuva yksittäiseksi RGB-komponentiksi
Alla olevaan koodiin olemme luoneet nollamatriisin, jonka mitat ovat kuva HxW, nolla palauttaa matriisin, joka on täynnä nollia, mutta samalla mitalla.
Muototoiminto on erittäin hyödyllinen, kun tarkastelemme kuvan ulottuvuutta, ja tässä olemme leikanneet kyseisen muodon funktion. Joten muoto tarttuisi kaikkeen nimettyihin pisteisiin, toisin sanoen toiseen nimettyyn pisteeseen, joka olisi kuvan korkeus ja leveys, koska kolmas edustaa kuvan RGB-komponenttia, emmekä tarvitse sitä täällä.
tuo cv2 tuoda numerotiedosto np image = cv2.imread ('input.jpg') B, G, R = cv2.split (kuva) nollat = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("PUNAINEN", cv2.merge ()) cv2.imshow ("Vihreä", cv2.merge ()) cv2.imshow ("Sininen", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Kuvan histogrammiesitys
Kuvan histogrammiesitys on menetelmä kuvien komponenttien visualisoimiseksi.
Seuraavan koodin avulla voit analysoida kuvaa sen yhdistettyjen ja yksittäisten väriosien värihistogrammin avulla.
tuo cv2 tuonti numero kuten np # meidän on tuotava matplotlib histogrammikaavioiden luomiseksi tuonti matplotlib.pyplot muodossa plt image = cv2.imread ('input.jpg') histogrammi = cv2.calcHist (,, Ei mitään,,) # piirrämme a histogrammi, ravel () tasoittaa kuvataulukkoamme plt.hist (image.ravel (), 256,) plt.show () # erillisten värikanavien katseleminen color = ('b', 'g', 'r') # tiedämme erota väri ja piirrä kukin histogrammissa i: lle, sarakkeet luetellaan (väri): histogrammi2 = cv2.calcHist (,, Ei mitään,,) plt.plot (histogrammi2, väri = col) plt.xlim () plt.show ()
Ymmärretään calcHist- funktio kullakin sen yksittäisellä parametrilla
cv2.calcHist (kuvat, kanavat, naamio, histsize , alueet)
Kuvat: sen lähdekuva tyyppiä uint 8 tai float 32. Se on annettava hakasulkeissa, ts. ””, Jotka osoittavat myös sen toisen tason matriisin, koska opencv-kuvan kuva on taulukon muotoinen data.
Kanavat: se annetaan myös hakasulkeissa. Se on kanavan hakemisto, jolle laskemme histogrammin, esimerkiksi jos syöttö on harmaasävykuva, sen arvo on, välitettäville värikuville tai sinisen, vihreän ja punaisen kanavan histogrammin laskemiseksi.
Naamio: maskikuva. Koko kuvan histogrammin löytämiseksi se annetaan muodossa "ei mitään". mutta jos haluat löytää tietyn kuvan alueen histogrammin, sinun on luotava sille maskikuva ja annettava se maskina.
Histsize: Tämä edustaa BIN-lukumäärää. Täytyy antaa hakasulkeissa, jotta voimme kulkea koko asteikon.
Alueet: Tämä on valikoimamme, normaalisti
Kuvien ja muotojen piirtäminen OpenCV: llä
Alla on muutama esimerkki viivojen, suorakulmion, monikulmion, ympyrän jne. Piirtämisestä OpenCV: ssä.
tuo cv2 tuoda numero nimellä np #luodaan mustan neliön kuva = np.zeros ((512 512,3), np.uint8) # voimme myös luoda tämän mustavalkoisena, mutta muutoksia ei tapahtuisi image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("musta suorakulmio (väri)", kuva) cv2.imshow ("musta suorakulmio (mustavalkoinen)", image_bw)
Linja
#luodaan viiva mustan neliön päälle # cv2.linja (kuva, aloituskoordinaatit, loppukoordinaatit , väri, paksuus) # piirtää viistopisteen paksuus 5 pikseliä kuva = np.zeros ((512,512,3), np.uint8) cv2.line (kuva, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("sininen viiva", kuva)
Suorakulmio
#luo suorakulmio mustan neliön päälle # cv2.suorakulmio (kuva, aloituskoordinaatit, loppukoordinaatit , väri, paksuus) # piirtää suorakulmion paksuus 5 pikseliä kuva = np.zeros ((512512,3), np.uint8) cv2. suorakulmio (kuva, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("suorakulmio", kuva)
Ympyrä# ympyrän luominen mustan neliön yli # cv2.circle (kuva, keskusta, säde, väri, täyttö) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255 127,0), - 1) cv2.imshow ("ympyrä", kuva)
Monikulmio# monikulmion kuvan luominen = np.zeros ((512 512,3), np.uint8) #let määrittelee neljä pistettä pts = np.array (,,,], np.int32) #let muotoilevat nyt pisteemme uudestaan polylines pts = pts. freshape ((- - 1,1,2)) cv2.polylines (image,, True, (0,255,255), 3) cv2.imshow ("monikulmio", kuva)
Teksti# tekstin asettaminen käyttämällä opencv # cv2.putText (kuva, 'näytettävä teksti', käynnistyslaitteen vasen aloituspiste, fontti, kirjasimen koko, väri, paksuus) image = np.zeros ((512 512,3), np.uint8) cv2. putText (image, "hello world", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("hello world", image) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision ja OpenCV ovat erittäin kattavia aiheita, mutta tämä opas olisi hyvä lähtökohta oppia OpenCV ja kuvankäsittely.