- Kas yra vaizdai?
- Kaip kompiuteris saugo vaizdus
- Kodėl mašinai sunku atpažinti vaizdus
- „OpenCV“ taikymas ir naudojimas
- „OpenCV“ diegimas su „Python“ ir „Anaconda“
- Vaizdų atidarymas ir išsaugojimas „OpenCV“
- Pilkas mastelio vaizdas „OpenCV“
- Spalvų tarpai
- Tyrinėjant atskirus RGB vaizdo komponentus
- Konvertuojamas vaizdas į atskirą RGB komponentą
- Histogramos atvaizdas
- Vaizdų ir formų piešimas naudojant „OpenCV“
Menas yra matymo būdas, ir jie sako, kad matymas yra tikėjimas, bet yra ir priešingai, tikėjimas yra matymas ir tikrai sunku įsivaizduoti gyvenimą šiame pasaulyje be regėjimo dovanos - mūsų akių, kaip nuostabu būti kūdikiu kai tik akys atsimerkia, mes matome pasaulį ir pradėjome atpažinti ir matyti aplinkinį pasaulį, tačiau laikui bėgant ta pati nuostabi patirtis tampa kasdieniška. Tačiau progresuodami su technologija esame ties riba, kur mašinos taip pat gali ją pamatyti ir suprasti. Šiuo metu atrodo, kad tai nėra mokslinė fantastika, jei tiesiog atrakinate telefoną veidu, tačiau mašinos regėjimo raidos istorija datuojama jau daugiau nei 20 metų.
Pirmasis oficialus žingsnis šioje srityje buvo žengtas dar 1999 m. Įgyvendinant „Intel“ iniciatyvą, kai visi atliekami tyrimai buvo bendradarbiaujama pagal OPEN CV („Open Source“ kompiuterio vizija), iš pradžių parašytą C ++, su pirmuoju pagrindiniu leidimu 1.0 2009 m., trečia 2015 m. ir ketvirta tik 2018 m. Dabar „OpenCV“ turi „C ++“, „Python“ ir „Java“ sąsajas ir palaiko „Windows“, „Linux“, „Mac OS“, „iOS“ ir „Android“. Taigi jį galima lengvai įdiegti į „Raspberry Pi“ su „Python“ ir „Linux“ aplinka. „Raspberry Pi“ su „OpenCV“ ir prijungta kamera gali būti naudojama kuriant daugybę realaus laiko vaizdo apdorojimo programų, tokių kaip veido aptikimas, veido užraktas, objektų sekimas, automobilio numerio atpažinimas, namų apsaugos sistema ir kt.
Prieš pradedant mokytis vaizdų apdorojimo naudojant „openCV “, svarbu žinoti, kokie vaizdai yra ir kaip žmonės bei mašinos suvokia tuos vaizdus.
Kas yra vaizdai?
Vaizdai yra matomas šviesos spektro dvimatis vaizdas. Matomos šviesos spektras yra tik dalis elektromagnetinio spektro, esančio ten tarp infraraudonųjų ir ultravioletinių spindulių.
Kaip susidaro vaizdai: - kai šviesa atsispindi nuo objekto ant plėvelės, jutiklio ar tinklainės.
Štai kaip veikia mūsų akys, naudodamos barjerą, kad užblokuotų daugumą žibintų taškų, paliekant mažą angą, pro kurią šviesa gali praleisti, vadinama diafragma, ir tai suformuoja daug fokusuotą vaizdą ir yra darbinis skylių kameros modelis, bet kaiščių skylių fotoaparate yra problema, tas pats šviesos kiekis pateks į diafragmą, kuri negalėjo būti tinkama susidariusiam filmui ar vaizdui, taip pat negalime gauti sufokusuoto vaizdo, kad sufokusuotume vaizdą reikia judinti filmą pirmyn ir atgal, tačiau tai yra problemiška daugelyje situacijų.
Arba mes galime išspręsti šią problemą naudodami lęšius, tai leidžia mums kontroliuoti diafragmos dydį, o fotografuojant tai vadinama f Stop, fotografuojant geriau yra mažesnė f Stop vertė.
Diafragmos dydis taip pat leidžia mums patekti į gražų lauko gylį, vadinamą Bokeh fotografijoje, tai leidžia mums neryškus fonas, kai mes sutelkiame dėmesį į vaizdą.
Kaip kompiuteris saugo vaizdus
Galbūt girdėjote apie įvairius vaizdo formatus, pvz., PNG,.jpgG ir kt., Visa tai yra skaitmeninis mūsų analoginio pasaulio atvaizdavimas, kompiuteriai tai daro, paversdami vaizdą į skaitmeninį kodą saugojimui ir tada interpretuoja failą atgal į vaizdą ekranas. Tačiau iš esmės jie naudoja bendrą platformą vaizdams saugoti, ir tas pats pasakytina apie „openCV“.
Pagal numatytuosius nustatymus „ OpenCV “ savo vaizdams naudoja RGB (raudoną, žalią ir mėlyną) spalvų erdvę, kur kiekvienoje pikselių koordinatėje (x, y) yra 3 reikšmės, besiskiriančios intensyvumu 8 bitų pavidalu, ty (0–255, 28).
Maišant skirtingus kiekvienos spalvos intensyvumus, gaunamas visas spektras, todėl tapyboje ar mene šios trys spalvos laikomos pagrindinėmis, o visos kitos - antrinėmis, nes didžiąją dalį antrinių spalvų gali suformuoti pagrindinės spalvos. Kaip ir geltonai, mes turime šias vertes: Raudona - 255; Žalia - 255; Mėlyna - 0.
Dabar vaizdai saugomi daugialypėse masyvuose. Programuojant masyvas yra objektų rinkinio serija. Čia kalbama apie trijų tipų masyvus 1D, 2D ir 3D, kur „D“ reiškia matmenis.
Spalvoti vaizdai saugomi trijų matmenų matricose, kur trečios dimensijos žymi RGB spalvas (kurias pamatysime vėliau), o kartu jie sudaro skirtingą vaizdo pikselių intensyvumą, o nespalvoti vaizdai saugomi dvimatėse matricose taip pat yra dviejų rūšių nespalvoti vaizdai: pilkos spalvos ir dvejetainiai vaizdai.
Pilkos spalvos vaizdai yra iš dviejų matmenų masyvo pilkų atspalvių, o dvejetainiai vaizdai yra juodos arba baltos spalvos taškų.
Kodėl mašinai sunku atpažinti vaizdus
Kompiuterio matymas savaime yra sudėtinga užduotis, jūs patys galite įsivaizduoti, kaip sunku mašinai suteikti regėjimo, atpažinimo ir atpažinimo jausmą. Yra šie veiksniai, dėl kurių kompiuterio matymas yra toks sunkus.
- Kameros jutiklio ir objektyvo apribojimai
- Žiūrėti taškų variantus
- Apšvietimo keitimas
- Mastelio keitimas
- Okliuzijos
- Objektų klasės variantai
- Neaiškūs vaizdai / optinės iliuzijos
„OpenCV“ taikymas ir naudojimas
Nepaisant sunkumų, „Computer Vision“ turi daug sėkmės istorijų
- Robotinė navigacija - savaime vairuojantys automobiliai
- Veido aptikimas ir atpažinimas
- Paieškos sistemos vaizdų paieška
- Valstybinio numerio skaitymas
- Rašysenos atpažinimas
- „Snapchat“ ir veido filtrai
- Objektų atpažinimas
- Kamuolių ir žaidėjų sekimas sporte
- Ir daug daugiau!
„OpenCV“ diegimas su „Python“ ir „Anaconda“
„OpenCV“ yra parašyta C ++, tačiau labai sunku jį įdiegti naudojant „C ++“, todėl pasirenkame jį įdiegti naudojant aukšto lygio kalbą kaip „python“, taip pat yra papildomų „ OpenCV“ diegimo su „python“ pranašumų, nes „Python“ yra viena iš lengviausių kalbų pradedantiesiems Taip pat labai galinga duomenų mokslų ir mašininio mokymosi programoms, taip pat ji saugo vaizdus daugybėje masyvų, o tai leidžia mums gana lengvai atlikti labai galingas operacijas.
Pagrindinis programavimas yra naudingas naudojant „Exposure to High School Level Math“, internetinę kamerą, „Python 2.7“ arba „3.6“ (pirmenybė teikiama „Anaconda“ paketui).
1 žingsnis. Atsisiųskite ir įdiekite „Anaconda Python“ paketą
Eikite į: https://www.anaconda.com/download ir pasirinkite, atsižvelgdami į tai, ar jūsų mašina veikia „Windows“, „Linux“ ar „Mac“, ir galite pasirinkti „Python 2.7“ arba „Python 3.7“ versiją 64 bitų arba 32 bitų sistemoms, bet dabar dienos dauguma sistemos yra 64 bitų.
„Anaconda“ python platinimas yra kartu su „Spyder“ studija, „Jupyter“ užrašų knygelėmis ir „anaconda“ raginimu, dėl kurio pitonas yra itin draugiškas naudoti. Pavyzdžiams atlikti naudosime „spyder“ studiją.
Pasirinkimas tarp „Python 2.7“ arba „3.7“ yra visiškai neutralus, tačiau pavyzdžiuose mes naudotume „Python 3.7“, nes tai yra „python“ ateitis ir perimsime „Python 2.7“ iš 2020 m. turint galvoje būsimąjį pitono aspektą. Taip pat pateikiami laukiami pagrindinių matematinių operacijų, tokių kaip (2/5 = 2,5), rezultatai, tuo tarpu pitonas 2.7 jį įvertins į 2. Taip pat spausdinimas traktuojamas kaip funkcija pitone 3.7 (spausdinti („labas“)), taigi jis suteikia praktinių žinių programuotojams.
2 žingsnis. Virtualios platformos sukūrimas naudojant „OpenCV“
Mes ketiname įdiegti „OpenCV“ sukurdami virtualią platformą „spyder“ naudodami „Anaconda“ raginimą ir čia įkeltą YML failą.
Naudodami YML failus, mes įdiegsime visus paketus ir bibliotekas, kurių prireiks, tačiau, jei norite įdiegti papildomus paketus, galite lengvai įdiegti naudodami „anaconda“ eilutę, vykdydami to paketo komandą.
Eikite į „Windows“ paieškos piktogramą ir suraskite „anaconda“ greitąjį terminalą, kurį rasite ką tik įdiegtame „anaconda“ aplanke.
Tada turite rasti atsisiųstą YML failą ir iš čia jūs turite du pasirinkimus arba pakeisti terminalo katalogą į vietą, kur atsisiųstas jūsų YML failas, arba nukopijuoti savo YML failą į katalogą, kuriame daugumoje jūsų anaconda yra įdiegta. atvejais tai būtų C: \ disko viduje, nukopijavus YML failą į nurodytą vietą, paleiskite šią komandą savo eilutėje
conda env sukurti –f virtual_platform_windows.yml
Kadangi mano sistema veikia „Windows “, YML failas ir komanda atitinka „Windows“, tačiau jūs galite modifikuoti pagal savo sistemą, pakeisdami „Windows“ „Linux“ arba „Mac“.
Pastaba: - Jei paketo išgaunant atsiranda klaida, pirmiausia įdiekite „ pytorch“ ir „ numpy“, tada paleiskite aukščiau nurodytą komandą.
Dabar raskite „anaconda“ navigatorių ir atsiras išskleidžiamasis meniu „Applications on ___“, tada pasirinkite virtualią aplinką, tada turėsite paleisti „ Spyder“ studiją.
Ir viskas, jūs pasiruošę pradėti!
Vaizdų atidarymas ir išsaugojimas „OpenCV“
Čia mes paaiškiname keletą pagrindinių komandų ir terminų, kaip naudoti „Python“ „OpenCV“. Sužinosime apie tris pagrindines „OpenCV“ imread, imshow ir imwrite funkcijas.
# komentarai pitone pateikiami # simboliu
Importuokite „opencv“ Python komandoje
importuoti cv2
Įkelkite vaizdą naudodami „imread“, nurodydami kelią į atvaizdą
image = cv2.imread ('input.jpg')
Dabar tas vaizdas yra įkeltas ir saugomas pitone kaip kintamasis, kurį pavadinome vaizdu
Dabar norėdami parodyti savo vaizdo kintamąjį, mes naudojame „imshow“, o pirmasis „imshow“ funkcijos parametras yra vaizdas, rodomas vaizdo lange, ir jis turi būti įvestas („“), kad vardas būtų pavaizduotas kaip eilutė
cv2.imshow („labas pasaulis“, vaizdas)
„waitkey“ leidžia mums įvesti informaciją, kai atidarytas vaizdo langas, palikdamas jį tuščią, jis tiesiog laukia, kol bus paspaustas bet koks raktas prieš tęsiant. Įdėdami skaičius (išskyrus 0), mes galime nurodyti atidėjimą, kiek laiko jūs laikote atidarytą langą (laikas milisekundėmis čia).
cv2.waitKey ()
'destrAllWindows' uždaro visus atidarytus langus, jei to nepadėsite, jūsų programa pakimba.
cv2.destroyAllWindows ()
, tam naudosime numpy, numpy yra biblioteka, skirta python programavimui, kad būtų galima pridėti palaikymą prie didelių daugiamačių masyvų ir matricų.
importuoti cv2 #importing numpy importuoti numpy kaip np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) #shape funkcija yra labai naudinga, kai žiūrime į masyvo matmenis , ji pateikia takelį, kuris suteikia vaizdo spausdinimo matmenį (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
konsolės išvestis - (183, 275, 3), du vaizdo matmenys yra 183 pikselių aukščio ir 275 pikselių pločio, o 3 reiškia, kad yra dar trys komponentai (R, G, B), kurie daro šį vaizdą (jis rodo kad spalvoti vaizdai saugomi trimatėse masyvuose).
print ('Vaizdo aukštis:', (image.shape, 'pixels')) print ('Vaizdo plotis:', (image.shape, 'pixels'))
konsolės išvestis - vaizdo aukštis: (183, „pikseliai“)
Vaizdo plotis: (275, „pikseliai“)
Redaguoto atvaizdo išsaugojimas „OpenCV“
Mes naudojame "imwrite" už nurodant failo ir vaizdas bus išsaugotas.
cv2.imwrite ('output.jpg', vaizdas) cv2.imwrite ('output.png', vaizdas)
Pirmasis argumentas yra failo, kurį norime išsaugoti, pavadinimas, {norint perskaityti arba išsaugoti failą, kurį naudojame (''), kad nurodytume jį kaip eilutę}, o antrasis argumentas yra failo pavadinimas.
„OpenCV“ leidžia išsaugoti vaizdą įvairiais formatais.
Pilkas mastelio vaizdas „OpenCV“
Pilkos spalvos skirstymas yra procesas, kurio metu vaizdas paverčiamas iš visos spalvos į pilkos spalvos atspalvius (juoda ir balta)
„Opencv“ versijoje prieš apdorojimą daugelis funkcijų vaizduoja pilkai. Tai daroma todėl, kad jis supaprastina vaizdą, veikia beveik kaip triukšmo mažinimas ir padidina apdorojimo laiką, nes vaizde yra mažiau informacijos (nes pilkos spalvos vaizdai saugomi dvimatėse matricose).
importuoti cv2 # įkelti įvesto vaizdo vaizdą = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # mes naudojame cvtcolor, norėdami konvertuoti į pilkos spalvos skalę gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', grey_image) cv2.waitKey () cv2.destroyALLWindows ()
Paprasčiausias būdas konvertuoti vaizdą į pilkos spalvos skalę yra tiesiog pridėkite argumentą 0 neskaitytoje funkcijoje prie atvaizdo pavadinimo
importuoti cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('grayscale', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
importuoti cv2 importuoti numerį kaip np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () grey_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', grey_image) print (grey_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
Konsolės išvestis: - (183, 275, 3) - spalvotam vaizdui
(183, 275) - pilkam vaizdui
Taigi tai aiškiai parodo, kad spalvotus vaizdus vaizduoja trijų matmenų masyvai, o pilkos spalvos vaizdus - dviejų matmenų masyvai.
Spalvų tarpai
Spalvų tarpai yra tai, kaip vaizdai saugomi. RGB, HSV, CMYK yra skirtingos spalvų erdvės, tai tik paprasti spalvų atvaizdavimo būdai.
RGB - raudona, žalia ir mėlyna.
HSV - atspalvis, sodrumas ir vertė.
Ir CMYK yra dažniausiai naudojami rašaliniai spausdintuvai.
RGB arba BGR spalvų erdvė
Numatytoji „OpenCV“ spalvų erdvė yra RGB. RGB yra papildomas spalvų modelis, generuojantis spalvas derinant skirtingo intensyvumo / ryškumo mėlynas, žalias ir raudonas spalvas. „OpenCV“ mes naudojame 8 bitų spalvų gylį.
- raudona (0–255)
- mėlyna (0–255)
- žalia (0–255)
Tačiau „ OpenCV“ iš tikrųjų spalvas saugo BGR formatu.
Įdomus faktas: - Mes naudojame BGR tvarką kompiuteriuose dėl to, kaip nepasirašyti 32 bitų skaičiai saugomi atmintyje. Tai vis tiek galiausiai saugoma kaip RGB. Sveikas skaičius, reiškiantis spalvą, pvz.: - 0X00BBGGRR bus saugomas kaip 0XRRGGBB.
HSV spalvų erdvėHSV (Hue, Saturation & value / Brightness) yra spalvų erdvė, bandanti vaizduoti spalvas, kurias žmonės suvokia. Spalvinė informacija kaupiama cilindro formos RGB spalvų taškuose.
Atspalvis - spalvos vertė (0–179)
Sodrumas - spalvų ryškumas (0–255)
Vertė - ryškumas arba intensyvumas (0–255)
HSV spalvų erdvės formatas yra naudingas segmentuojant spalvas. RGB filtruoti tam tikras spalvas nėra lengva, tačiau HSV leidžia daug lengviau nustatyti spalvų diapazonus, kad filtruotume konkrečią spalvą, kai mes jas suvokiame.
Atspalvis rodo spalvą HSV, atspalvio vertė svyruoja nuo 0 iki 180, o ne 360, todėl jis neužbaigia viso rato, todėl jis žymimas kitaip nei standartas.
Spalvų diapazono filtrai
- Raudona - (165-15)
- Žalia - (45-75)
- Mėlyna - (90–120)
Kadangi žinome, kad vaizdai saugomi RGB (raudonos, žalios ir mėlynos) spalvų erdvėje, todėl „OpenCV“ mums rodo tą patį, tačiau pirmiausia reikia prisiminti apie „Opencv“ RGB formatą, kad tai iš tikrųjų yra BGR, ir mes galime tai žinoti, žiūrėdami į atvaizdo forma.
importuoti cv2 importuoti numerį kaip np image = cv2.imread ('input.jpg') # B, G, R pirmojo 0,0 taško B, G, R = vaizdo spausdinimo (B, G, R) spausdinimo (vaizdo ) reikšmė .shape) #dabar, jei tai pritaikysime pilkos spalvos vaizde gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (grey_img.shape) #gray_image pixel value 10,50 pixel print (grey_img)
Konsolės išvestis: spausdinimas (B, G, R) - 6 11 10
spausdinti (image.shape) - (183, 275, 3)
spausdinti (gray_img.shape) - (183, 275)
spauda (pilka_img) - 69
Dabar pilkos skalės vaizde yra tik du matmenys, nes mes atsimename, kad spalvotas vaizdas saugomas trimis matmenimis, o trečiasis matmuo yra (R, G, B), o pilkoje skalėje yra tik du matmenys, nes (R, G, B) nėra ir tam tikrai pikselių padėčiai gauname tik vieną vertę, o spalvotame paveikslėlyje - tris vertes.
Kita naudinga spalvų erdvė yra HSV
importuoti 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 ('sodrumo kanalas', hsv_image) cv2.imshow ('vertės kanalas', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Paleidę kodą galite pamatyti keturis vaizdus, iš kurių trys yra atskirų kanalų, o vienas - sujungtas HSV vaizdas.
„Hue“ kanalo vaizdas yra gana tamsus, nes jo vertė svyruoja tik nuo 0 iki 180.
Be to, atkreipkite dėmesį, kad funkcija „ imshow“ bando parodyti RGB arba BGR vaizdą, tačiau HSV konversija sutampa.
Be to, vertės kanalas dėl savo ryškumo bus panašus į pilkos spalvos vaizdą.
Tyrinėjant atskirus RGB vaizdo komponentus
importuoti cv2 image = cv2.imread ('input.jpg') # opencv padalijimo funkcija padalija vaizdą į kiekvieną spalvų indeksą B, G, R = cv2.split (vaizdas) cv2.imshow ("Raudona", R) cv2.imshow ("Žalia", G) cv2.imshow ("Mėlyna", B) # originalaus vaizdo kūrimas sujungiant atskirus sujungtus spalvų komponentus = cv2.merge () cv2.imshow ("sujungta", sujungta) # sustiprinta mėlyna spalva sujungta = cv2.merge () cv2.imshow ("sujungta su mėlyna amplifikacija", sujungta) # reprezentuojanti atskirų spalvų komponentų formą. # išvestis bus tik dviejų matmenų, kurios aukštis ir plotis bus, nes trečiasis RGB komponento elementas yra atskirai atspaudžiamas spausdinimo (B. formos) spausdinimas (R.forma) spauda (G. forma) cv2.waitKey (0) cv2.destroyAllWindows ()
Pulto išvestis: # formos matmenys iš formos funkcijos
(183, 275)
(183, 275)
(183, 275)
Konvertuojamas vaizdas į atskirą RGB komponentą
Žemiau esančiame kode sukūrėme nulio matricą su paveikslėlio HxW matmenimis, nulis grąžina masyvą, užpildytą nuliais, bet su tais pačiais matmenimis.
Formos funkcija yra labai naudinga, kai mes žiūrime į vaizdo matmenį, ir čia mes padarėme šios formos funkcijos pjaustymą. Taigi forma sugriebtų viską iki nurodytų taškų, ty iki antrų nurodytų taškų, kurie būtų vaizdo aukštis ir plotis, nes trečiasis atstumas yra RGB vaizdo komponentas, ir mums to čia nereikia.
importuoti cv2 importuoti numerį kaip np image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) nuliai = np.zeros (image.shape, dtype = "uint8") cv2.imshow („RED“, cv2.merge ()) cv2.imshow („Žalia“, cv2.merge ()) cv2.imshow („Mėlyna“, cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Histogramos atvaizdas
Histograminis vaizdo vaizdavimas yra vaizdų komponentų vizualizavimo metodas.
Šis kodas leidžia analizuoti vaizdą pagal jo kombinuotų ir atskirų spalvų komponentų spalvų histogramą.
importuoti cv2 import numerį kaip np # mums reikia importuoti matplotlib norint sukurti histogramos diagramas importuoti matplotlib.pyplot kaip plt image = cv2.imread ('input.jpg') histograma = cv2.calcHist (,, Nėra,,) # mes sklypą histograma, ravel () išlygina mūsų vaizdo masyvą plt.hist (image.ravel (), 256,) plt.show () # atskirų spalvų kanalų peržiūra color = ('b', 'g', 'r') # žinome Atskirkite spalvas ir diagramas i histogramoje , i, col surašykite (spalva): histograma2 = cv2.calcHist (,, Nėra,,) plt.plot (histograma2, spalva = col) plt.xlim () plt.show ()
Leiskite suprasti calcHist funkciją su kiekviena jo atskirų parametrų
cv2.calcHist (vaizdai, kanalai, kaukė, histsize , diapazonai)
Vaizdai: jo „uint 8“ arba „float 32“ tipo pirminis vaizdas. Jis turėtų būti pateiktas laužtiniuose skliaustuose, ty „“, kurie taip pat nurodo antrojo lygio masyvą, nes „opencv“ vaizdas yra masyvo formos duomenys.
Kanalai: jis taip pat nurodomas laužtiniuose skliaustuose. Tai kanalo indeksas, pagal kurį apskaičiuojame histogramą, pavyzdžiui, jei įvestis yra pilkumo vaizdo vaizdas, jo vertė yra spalvotiems vaizdams, kuriuos galite perduoti, arba norint apskaičiuoti atitinkamai mėlynos, žalios ir raudonos kanalų histogramas.
Kaukė: kaukės vaizdas. norint rasti viso vaizdo histogramą, ji pateikiama kaip „nėra“. bet jei norite rasti tam tikro atvaizdo regiono histogramą, turite sukurti tam kaukės vaizdą ir suteikti jį kaip kaukę.
Istsize: Tai reiškia mūsų BIN skaičių. Reikia pateikti laužtiniuose skliaustuose, kad pravažiuotume visą skalę.
Diapazonai: tai yra mūsų diapazonas, paprastai yra
Vaizdų ir formų piešimas naudojant „OpenCV“
Žemiau yra keletas linijų, stačiakampio, daugiakampio, apskritimo ir kt. Piešimo „OpenCV“ pavyzdžių.
importuoti cv2 import numerį kaip np #juodo kvadrato vaizdo sukūrimas = np.zeros ((512 512,3), np.uint8) # mes taip pat galime sukurti tai nespalvotai, tačiau nebūtų jokių pakeitimų image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("juodas stačiakampis (spalva)", vaizdas) cv2.imshow ("juodas stačiakampis (nespalvotas)", image_bw)
Linija
#create liniją per juodą kvadratą # cv2.line (image, pradedant koordinates, baigiant koordinates, spalva, storis) #drawing įstriža linija storis 5 taškų image = np.zeros ((512,512,3), np.uint8) CV2.line (vaizdas, (0,0), (511,511), (255,127,0), 5) cv2.imshow („mėlyna linija“, vaizdas)
Stačiakampis
#create stačiakampį per juodą kvadratą # cv2.rectangle (image, pradedant koordinates, baigiant koordinates, spalva, storis) #drawing storis 5 taškų stačiakampį image = np.zeros ((512,512,3), np.uint8) CV2. stačiakampis (vaizdas, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("stačiakampis", vaizdas)
Apskritimas# apskritimo sukūrimas virš juodo kvadrato # cv2.circle (vaizdas, centras, spindulys, spalva, užpildymas) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255 127,0), - 1) cv2.imshow („apskritimas“, vaizdas)
Poligonas# daugiakampio vaizdo sukūrimas = np.zeros ((512 512,3), np.uint8) #lets apibrėžia keturis taškus pts = np.array (,,,], np.int32) #lets dabar pakeičia mūsų taškus tokia forma, kurios reikalauja Laužtės tšk = pts.reshape ((- 1,1,2)) cv2.polylines (vaizdas,, Tiesa, (0255255), 3) cv2.imshow ("daugiakampis", vaizdas)
Tekstas# teksto įdėjimas naudojant opencv # cv2.putText (vaizdas, „rodomas tekstas“, paleidimo kairysis pradinis taškas, šriftas, šrifto dydis, spalva, storis) image = np.zeros ((512 512,3), np.uint8) cv2. putText (image, "labas pasaulis", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("labas pasaulis", vaizdas) cv2.waitKey (0) cv2.destroyAllWindows ()
„Computer Vision“ ir „OpenCV“ yra labai plačios temos, kurias reikia aptarti, tačiau šis vadovas būtų geras atspirties taškas mokantis „OpenCV“ ir vaizdo apdorojimo.