- Kas ir attēli?
- Kā dators saglabā attēlus
- Kāpēc mašīnai ir grūti noteikt attēlus
- OpenCV pielietojums un izmantojums
- OpenCV instalēšana ar Python un Anaconda
- Attēlu atvēršana un saglabāšana OpenCV
- Pelēks mērogošanas attēls OpenCV
- Krāsu telpas
- RGB attēla atsevišķu komponentu izpēte
- Attēla konvertēšana atsevišķā RGB komponentā
- Attēla histogrammas attēlojums
- Attēlu un formu zīmēšana, izmantojot OpenCV
Māksla ir redzes veids, un viņi saka, ka redzēt ir ticība, bet ir arī tieši pretēji, ticēt ir redzēt, un ir ļoti grūti iedomāties dzīvi šajā pasaulē bez redzes dāvanas - mūsu acīm, cik brīnišķīgi ir būt zīdainim kad acis vienkārši atveras, mēs redzam pasauli un sākām atpazīt un redzēt apkārtējo pasauli, bet, laikam ejot, tā pati brīnišķīgā pieredze kļūst ikdienišķa. Bet, progresējot ar tehnoloģiju, mēs esam uz robežas, kur arī mašīnas to spēj redzēt un saprast. Pašlaik tas nešķiet būt sci-fi, ja jūs vienkārši atbloķētu tālruni ar savu seju, bet stāsts par attīstības mašīna redze ir datēta sen atpakaļ vairāk nekā 20 gadus.
Sākotnējais oficiālais solis šajā jomā tika veikts 1999. gadā Intel iniciatīvā, kad visi notiekošie pētījumi tika sadarboti saskaņā ar OPEN CV (Open Source computer vision), kas sākotnēji tika rakstīts C ++, un tā pirmais lielākais izlaidums 1.0 2006. gadā 2009. gadā, trešais 2015. gadā un ceturtais tikai 2018. gadā. Tagad OpenCV ir C ++, Python un Java saskarnes un atbalsta Windows, Linux, Mac OS, iOS un Android. Tātad to var viegli instalēt Raspberry Pi ar Python un Linux vidi. Un Raspberry Pi ar OpenCV un pievienoto kameru var izmantot, lai izveidotu daudzas reāllaika attēlu apstrādes programmas, piemēram, sejas noteikšanu, sejas bloķēšanu, objektu izsekošanu, automašīnas numura zīmes noteikšanu, mājas drošības sistēmu utt.
Pirms mācīties attēlu apstrādi, izmantojot openCV, ir svarīgi zināt, kādi ir attēli un kā cilvēki un mašīnas uztver šos attēlus.
Kas ir attēli?
Attēli ir redzamās gaismas spektra divdimensionāls attēlojums. Redzamās gaismas spektrs ir tikai daļa no elektromagnētiskā spektra, kas atrodas starp infrasarkano un ultravioleto spektru.
Kā veidojas attēli: - kad gaisma atstaro objektu uz filmas, sensora vai tīklenes.
Šādi darbojas mūsu acis, izmantojot barjeru, lai bloķētu lielāko daļu gaismas punktu, atstājot nelielu atveri, caur kuru gaisma to var iziet, sauc par diafragmu, un tas veido daudz fokusētu attēlu un ir darbināms tapa caurumu kamerai, bet tapas cauruma kamerā ir problēma, ka tāds pats gaismas daudzums ieplūdīs diafragmā, kas nevarētu būt piemērota filmai vai attēlam, kā arī mēs nevaram iegūt fokusētu attēlu, lai fokusētu attēlu jāpārvieto filma uz priekšu un atpakaļ, bet tas ir problemātiski daudzās situācijās.
Vai arī mēs varam novērst šo problēmu, izmantojot objektīvus, tas ļauj mums kontrolēt diafragmas atvēruma lielumu, un fotografējot tā pazīstama kā f Stop, fotogrāfijā zemāka f Stop vērtība ir labāka.
Apertūras lielums ļauj mums nokļūt jaukā lauka dziļumā, ko fotogrāfijā sauc par Bokeh, tas ļauj mums iegūt neskaidru fonu, kamēr mēs koncentrējamies uz attēlu.
Kā dators saglabā attēlus
Iespējams, esat dzirdējuši par dažādiem attēlu formātiem, piemēram,.PGG,.jpgG un utt., Tas viss ir mūsu analogās pasaules digitālais attēlojums, datori to dara, pārveidojot attēlu digitālā kodā, lai tos uzglabātu, un pēc tam interpretē failu atpakaļ attēlā. displejs. Bet pamatā viņi izmanto kopēju platformu attēlu glabāšanai, un tas pats attiecas arī uz openCV.
OpenCV izmanto RGB (sarkans, zaļš un zils) krāsu telpa pēc noklusējuma tā attēlu, kur katrs pikselis koordinātu (x, y) ir 3 vērtības, sākot par intensitāti, 8-bit formā ti (0-255, 2. 8).
Sajaucot katras krāsas dažādas intensitātes, mēs iegūstam pilnu spektru, tāpēc glezniecībā vai mākslā šīs trīs krāsas tiek uzskatītas par primārajām krāsām un visas pārējās par sekundārajām, jo lielāko daļu sekundāro krāsu var veidot primārās krāsas. Tāpat kā dzeltenai, mums ir šādas vērtības: Sarkana - 255; Zaļā - 255; Zils - 0.
Tagad attēli tiek glabāti daudzdimensiju blokos. Programmēšanā masīvs ir objektu kolekcijas sērija. Un šeit mēs strādājam ar trīs veidu masīviem 1D, 2D un 3D, kur 'D' nozīmē dimensiju.
Krāsainie attēli tiek glabāti trīsdimensiju blokos, kur trešie izmēri attēlo RGB krāsas (ko redzēsim vēlāk), un kopā tie veido atšķirīgu attēla pikseļu intensitāti, savukārt melnbaltie attēli tiek glabāti divdimensiju masīvos. un ir arī divu veidu melnbaltie attēli: pelēktoņu un binārie attēli.
Pelēktoņu attēli ir veidoti no divdimensiju masīva pelēkajiem toņiem, savukārt binārā attēla pikseļi ir vai nu melni, vai balti.
Kāpēc mašīnai ir grūti noteikt attēlus
Datora redze pati par sevi ir sarežģīts uzdevums, jūs pats varat iedomāties, cik grūti ir mašīnai piešķirt redzes, atpazīšanas un identifikācijas izjūtu. Tur ir šādi faktori, kas datoru redzi padara tik smagu.
- Kameras sensora un objektīva ierobežojumi
- Skatu punktu variācijas
- Mainot apgaismojumu
- Mērogošana
- Oklūzijas
- Objekta klases variācijas
- Neskaidri attēli / optiskās ilūzijas
OpenCV pielietojums un izmantojums
Neskatoties uz grūtībām, Computer Vision ir daudz veiksmes stāstu
- Robotu navigācija - pašpiedziņas automašīnas
- Sejas noteikšana un atpazīšana
- Meklētājprogrammas attēlu meklēšana
- Valsts numura lasīšana
- Rokraksta atpazīšana
- Snapchat un sejas filtri
- Objekta atpazīšana
- Bumbu un spēlētāju izsekošana sportā
- Un vēl daudz vairāk!
OpenCV instalēšana ar Python un Anaconda
OpenCV ir rakstīts C ++, taču to ir ļoti grūti īstenot ar C ++, tāpēc mēs izvēlamies to ieviest ar augsta līmeņa valodu kā pitonu, kā arī ir papildu priekšrocības, ja OpenCV tiek ieviesta ar pitonu, jo Python ir viena no vienkāršākajām valodām arī iesācējiem Tas ir ļoti spēcīgs datu zinātnes un mašīnmācīšanās lietojumprogrammām, kā arī glabā attēlus daudzos blokos, kas ļauj mums diezgan viegli veikt dažas ļoti jaudīgas darbības.
Pamata programmēšana ir noderīga, izmantojot ekspozīciju vidusskolas līmeņa matemātikai, tīmekļa kameru, Python 2.7 vai 3.6 (priekšroka dodama Anaconda pakotnei).
1. solis. Lejupielādējiet un instalējiet Anaconda Python paketi
Pārejiet uz vietni https://www.anaconda.com/download un izvēlieties atbilstoši savai mašīnai tās Windows, Linux vai Mac laika apstākļiem, un 64 vai 32 bitu sistēmām varat izvēlēties Python 2.7 vai Python 3.7 versiju, taču dienas lielākā daļa sistēmas ir 64 bitu.
Python anaconda izplatīšana nāk kopā ar Spyder studio, Jupyter piezīmjdatoriem un anaconda uzvedni, kas padara pitonu ļoti draudzīgu lietošanai. Piemēram, mēs izmantotu spyderu studiju.
Izvēle starp pitonu 2.7 vai 3.7 ir pilnīgi neitrāla, taču piemēriem mēs izmantotu pitonu 3.7, jo tā ir pitona nākotne un pārņems pitonu 2.7 no 2020. gada, kā arī lielākā daļa bibliotēku tiek veidotas pitonā 3.7. ņemot vērā pitona nākotnes aspektu. Tas arī dod gaidītos rezultātus attiecībā uz matemātiskām pamatdarbībām, piemēram, (2/5 = 2,5), savukārt pitons 2.7 to novērtētu uz 2. Arī druka tiek uzskatīta par funkciju pitonā 3.7 (print (“labdien”)), tāpēc tas dod praktisku palīdzību programmētājiem.
2. solis. Virtuālās platformas izveide ar OpenCV
Mēs gatavojamies instalēt OpenCV, izveidojot virtuālu platformu spyder, izmantojot Anaconda uzvedni un šeit augšupielādēto YML failu.
Izmantojot YML failus, mēs instalēsim visas nepieciešamās paketes un bibliotēkas, taču, ja vēlaties instalēt papildu paketes, varat viegli instalēt, izmantojot anaconda uzvedni, palaižot šīs pakotnes komandu.
Dodieties uz sava Windows meklēšanas ikonu un atrodiet anaconda uzvednes termināli. To varat atrast tikko instalētās anaconda mapes iekšpusē.
Tad jums jāatrod lejupielādētais YML fails, un no šejienes jums ir divas iespējas, vai nu nomainot termināla direktoriju uz vietu, kur tiek lejupielādēts jūsu YML fails, vai nu kopējiet YML failu direktorijā, kurā jūsu anaconda ir instalēta lielākajā daļā gadījumu. gadījumos tas būtu C: \ diska iekšpusē, pēc YML faila kopēšanas norādītajā vietā Palaidiet šādu komandu savā uzvednē
conda env izveidot –f virtual_platform_windows.yml
Tā kā mana sistēma darbojas uz Windows, YML fails un komanda atbilst logiem, tomēr jūs varat modificēt atbilstoši savai sistēmai, attiecīgi aizstājot logus ar Linux vai Mac.
Piezīme: - Ja pakotnes ekstrakcija rada kļūdu, vispirms instalējiet pytorch un numpy un pēc tam palaidiet iepriekš minēto komandu.
Tagad atrodiet anaconda navigatoru, un tur būs nolaižamā izvēlne “Applications on ___” un no turienes izvēlieties virtuālo vidi, un tad no turienes jums jāuzsāk Spyder studio.
Un viss, jūs esat gatavs sākt!
Attēlu atvēršana un saglabāšana OpenCV
Šeit mēs izskaidrojam dažas pamata komandas un terminoloģiju, lai izmantotu Python OpenCV. Mēs uzzināsim par trim pamatfunkcijām OpenCV imread, imshow un imwrite.
#komentus pitonā piešķir # simbols
Importējiet opencv pitonā ar komandu
importēt cv2
Ielādējiet attēlu, izmantojot “imread”, norādot attēla ceļu
image = cv2.imread ('input.jpg')
Tagad šis attēls ir ielādēts un saglabāts pitonā kā mainīgais, kuru mēs nosaucām par attēlu
Tagad, lai parādītu attēla mainīgo, mēs izmantojam 'imshow', un pirmais imshow funkcijas parametrs ir attēla logā parādītais nosaukums, un tas jāievada laukā (''), lai attēlotu vārdu kā virkni
cv2.imshow ('sveika pasaule', attēls)
uzgaidīšanas taustiņš ļauj mums ievadīt informāciju, kad attēla logs ir atvērts, atstājot to tukšu, tas tikai gaida, kamēr tiek turpināts nospiest jebkuru taustiņu, pirms turpināt, ievietojot numurus (izņemot 0), mēs varam norādīt kavēšanos, cik ilgi jūs turat atvērtu logu (laiks milisekundēs šeit).
cv2.waitKey ()
'iznīcinātAllWindows' aizver visus atvērtos logus, ja tas netiks ievietots, programma pakarsies.
cv2.destroyAllWindows ()
, šim nolūkam mēs izmantosim numpy, numpy ir bibliotēka pitona programmēšanai, lai pievienotu atbalstu lieliem daudzdimensionāliem masīviem un matricām.
importēt cv2 #importing numpy importēt numpy kā np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', attēls) # forma funkcija ir ļoti noderīga, ja mēs skatāmies masīva dimensijas , tā atgriež kopu, kas piešķir attēla drukas izmēru (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
konsoles izeja - (183, 275, 3), divi attēla izmēri ir 183 pikseļi augstumā un 275 pikseļi platumā, un 3 nozīmē, ka ir vēl trīs komponenti (R, G, B), kas veido šo attēlu (tas parāda ka krāsainie attēli tiek glabāti trīsdimensiju blokos).
print ('Attēla augstums:', (image.shape, 'pixels')) print ('Attēla platums:', (image.shape, 'pixels'))
konsoles izeja - attēla augstums: (183, 'pikseļi')
Attēla platums: (275, 'pikseļi')
Rediģētā attēla saglabāšana OpenCV
Lai norādītu saglabājamo faila nosaukumu un attēlu, mēs izmantojam “imwrite”.
cv2.imwrite ('output.jpg', attēls) cv2.imwrite ('output.png', attēls)
Pirmais arguments ir faila nosaukums, kuru mēs vēlamies saglabāt, {lasīt vai saglabāt failu, kuru izmantojam (''), lai to norādītu kā virkni), un otrais arguments ir faila nosaukums.
OpenCV ļauj saglabāt attēlu dažādos formātos.
Pelēks mērogošanas attēls OpenCV
Pelēktoņu maiņa ir process, kurā attēls tiek pārveidots no pilnkrāsas uz pelēku nokrāsu (melnbalts)
Programmā opencv daudzas funkcijas pirms apstrādes ir pelēkā krāsā. Tas tiek darīts, jo tas vienkāršo attēlu, darbojoties gandrīz kā trokšņa samazināšana un palielinot apstrādes laiku, jo attēlā ir mazāk informācijas (jo pelēktoņu attēli tiek glabāti divdimensiju masīvos).
importēt cv2 # ielādēt mūsu ievades attēlu image = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # mēs izmantojam cvtcolor, lai pārvērstu pelēktoņos grey_image = cv2.cvtColor (attēls, cv2.COLOR_BGR2GRAY) cv2.imshow ('pelēktoņi', gray_image) cv2.waitKey () cv2.destroyALLWindows ()
Vienkāršāks veids, kā pārveidot attēlu pelēktoņos, vienkārši pievienojiet attēla nosaukumam argumentu 0 nelasītā funkcijā
importēt cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('pelēktoņi', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
importēt cv2 importēt numpy kā np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', gray_image) print (gray_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
Konsoles izeja: - (183, 275, 3) - krāsainam attēlam
(183, 275) - pelēktoņu attēlam
Tādējādi tas skaidri parāda, ka krāsainos attēlus attēlo trīsdimensiju masīvi, bet pelēko mērogu attēlus - ar divdimensiju masīviem.
Krāsu telpas
Krāsu atstarpes ir veids, kā attēli tiek saglabāti. RGB, HSV, CMYK ir dažādas krāsu telpas, tie ir tikai vienkārši krāsu attēlošanas veidi.
RGB - sarkans, zaļš un zils.
HSV - nokrāsa, piesātinājums un vērtība.
Un CMYK parasti izmanto tintes printeriem.
RGB vai BGR krāsu telpa
OpenCV noklusējuma krāsu telpa ir RGB. RGB ir papildinošs krāsu modelis, kas ģenerē krāsas, apvienojot dažādas intensitātes / spilgtuma zilās, zaļās un sarkanās krāsas. OpenCV mēs izmantojam 8 bitu krāsu dziļumus.
- sarkans (0–255)
- zils (0–255)
- zaļa (0–255)
Tomēr OpenCV krāsas faktiski tiek saglabātas BGR formātā.
Jautrība: - datoros mēs izmantojam BGR secību, jo neparakstītie 32 bitu veseli skaitļi tiek glabāti atmiņā, tas joprojām tiek saglabāts kā RGB. Vesels skaitlis, kas apzīmē krāsu, piemēram: - 0X00BBGGRR tiks saglabāts kā 0XRRGGBB.
HSV krāsu telpaHSV (Hue, Saturation & value / Brightness) ir krāsu telpa, kas mēģina attēlot krāsas, ko cilvēki to uztver. Tas uzglabā krāsu informāciju RGB krāsu punktu cilindriskā attēlojumā.
Toni - krāsas vērtība (0-179)
Piesātinājums - krāsu vibrācija (0–255)
Vērtība - spilgtums vai intensitāte (0–255)
HSV krāsu telpas formāts ir noderīgs krāsu segmentācijā. RGB filtrēt noteiktas krāsas nav viegli, tomēr HSV ļauj daudz vieglāk iestatīt krāsu diapazonus, lai filtrētu konkrētu krāsu, kā mēs tos uztveram.
Hue atspoguļo krāsu HSV, nokrāsas vērtība svārstās no 0 līdz 180 un nav 360, tāpēc tā nepabeidz pilnu apli, un tāpēc tā tiek kartēta citādi nekā standarta.
Krāsu diapazona filtri
- Sarkans - (165-15)
- Zaļš - (45-75)
- Zils - (90–120)
Tā kā mēs zinām, ka attēli tiek glabāti RGB (sarkanā, zaļā un zilā) krāsu telpā, un tāpēc OpenCV mums parāda to pašu, taču vispirms jāatceras par opencv RGB formātu, ka tas faktiski ir BGR, un mēs to varam uzzināt, aplūkojot attēla forma.
importēt cv2 importēt numpy kā np image = cv2.imread ('input.jpg') # B, G, R vērtība pirmajam 0,0 pikseļu B, G, R = attēla drukas (B, G, R) drukāšanai (attēls. forma) # tagad, ja mēs to lietojam pelēktoņu attēlā gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (gray_img.shape) #gray_image pixel value for 10,50 pixel print (gray_img)
Konsoles izeja: druka (B, G, R) - 6 11 10
izdruka (image.shape) - (183, 275, 3)
druka (gray_img.shape) - (183, 275)
druka (gray_img) - 69
Tagad pelēkā mēroga attēlā ir tikai divas dimensijas, jo mēs atceramies, ka krāsu attēls tiek glabāts trīs dimensijās, trešā dimensija ir (R, G, B), savukārt pelēktoņos ir tikai divas dimensijas, jo (R, G, B) nav, un konkrētai pikseļu pozīcijai mēs iegūstam tikai vienu vērtību, bet krāsainā attēlā - trīs vērtības.
Vēl viena noderīga krāsu telpa ir HSV
importēt 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 ('piesātinājuma kanāls', hsv_image) cv2.imshow ('vērtības kanāls', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Pēc koda palaišanas jūs varat redzēt četrus attēlus, no kuriem trīs ir atsevišķi kanāli, bet viens ir apvienots HSV attēls.
Hue kanāla attēls ir diezgan tumšs, jo tā vērtība svārstās tikai no 0 līdz 180.
Ņemiet vērā arī to, ka funkcija imshow mēģina parādīt RGB vai BGR attēlu, bet HSV pārveidošana to pārklājas.
Arī vērtības kanāls spilgtuma dēļ būs līdzīgs attēla pelēktoņiem.
RGB attēla atsevišķu komponentu izpēte
importēt cv2 image = cv2.imread ('input.jpg') # opencv sadalīšanas funkcija sadala imageinti katru krāsu indeksu B, G, R = cv2.split (attēls) cv2.imshow ("Red", R) cv2.imshow ("Zaļā", G) cv2.imshow ("Zilā", B) # sākotnējā attēla izgatavošana, apvienojot atsevišķas apvienotās krāsu sastāvdaļas = cv2.merge () cv2.imshow ("apvienotas", apvienotas) # apvienotās zilās krāsas pastiprināšana = cv2.merge () cv2.imshow ("apvienots ar zilu pastiprināt", apvienots) #reprezentē atsevišķu krāsu komponentu formu. # izvadam būs tikai divas dimensijas, kas varētu būt augstums un platums, jo RGB komponenta trešais elements ir individuāli attēlots drukas (B. forma) druka (R.forma) druka (G. forma) cv2.waitKey (0) cv2.destroyAllWindows ()
Konsoles izvade: # attēla izmēri no formas funkcijas
(183, 275)
(183, 275)
(183, 275)
Attēla konvertēšana atsevišķā RGB komponentā
Zem koda mēs esam izveidojuši nulles matricu ar attēla HxW izmēriem, nulle atgriež masīvu, kas piepildīts ar nullēm, bet ar vienādiem izmēriem.
Formas funkcija ir ļoti noderīga, ja mēs skatāmies uz attēla dimensiju, un šeit mēs esam paveikuši šīs formas funkcijas sagriešanu. Tātad forma satvertu visu līdz norādītajiem punktiem, ti, līdz otrajiem norādītajiem punktiem, kas būtu attēla augstums un platums, jo trešais ir attēla RGB komponents, un mums tas šeit nav vajadzīgs.
importēt cv2 importēt numpy kā np image = cv2.imread ('input.jpg') B, G, R = cv2.split (attēls) nulles = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("RED", cv2.merge ()) cv2.imshow ("Green", cv2.merge ()) cv2.imshow ("Blue", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Attēla histogrammas attēlojums
Attēla histogrammas attēlojums ir attēlu komponentu vizualizācijas metode.
Šis kods ļauj analizēt attēlu, izmantojot tā kombinēto un atsevišķo krāsu komponentu krāsu histogrammu.
importēt cv2 import numpy kā np # mums ir jāimportē matplotlib, lai izveidotu histogrammas diagrammas. import matplotlib.pyplot kā plt image = cv2.imread ('input.jpg') histogramma = cv2.calcHist (,, Nav,,) # mēs uzzīmējam a histogramma, ravel () izlīdzina mūsu attēlu masīvu plt.hist (image.ravel (), 256,) plt.show () # atsevišķu krāsu kanālu skatīšana color = ('b', 'g', 'r') # mēs zinām atdaliet krāsu un uzzīmējiet katru histogrammā i, kols uzskaitījumā (krāsa): histogramma2 = cv2.calcHist (,, Nav,,) plt.plot (histogramma2, krāsa = kola ) plt.xlim ()
Pieņemsim saprast calcHist funkcijas ar katru no saviem individuālajiem parametriem
cv2.calcHist (attēli, kanāli, maska, histsize , diapazoni)
Attēli: tā avota attēls ir tips uint 8 vai float 32. Tas jānorāda kvadrātiekavās, ti, “”, kas norāda arī tā otrā līmeņa masīvu, jo opencv attēls ir masīva forma.
Kanāli: tas ir norādīts arī kvadrātiekavās. Tas ir kanāla indekss, kuram mēs aprēķinām histogrammu, piemēram, ja ievade ir pelēktoņu attēls, tā vērtība ir krāsu attēliem, kurus varat nodot, vai, lai aprēķinātu attiecīgi zilā, zaļā un sarkanā kanāla histogrammu.
Maska: maskas attēls. lai atrastu pilna attēla histogrammu, tā tiek dota kā “nav”. bet, ja vēlaties atrast konkrēta attēla reģiona histogrammu, jums ir jāizveido maskas attēls un jāsniedz tas kā maska.
Histsize: Tas norāda mūsu BIN skaitu. Nepieciešams norādīt kvadrātiekavās, lai mēs pārietu pilnu skalu.
Diapazons: Tas ir mūsu diapazons, parasti tā ir
Attēlu un formu zīmēšana, izmantojot OpenCV
Zemāk ir daži piemēri līniju, taisnstūra, daudzstūra, apļa utt. Zīmēšanai OpenCV.
importēt cv2 importēt numpy kā np #izveidojot melnu kvadrātu image = np.zeros ((512 512,3), np.uint8) #mēs to varam izveidot arī melnbaltā krāsā, taču izmaiņas nemainītos image_bw = np.zeros ((512 512), np.uint8) cv2.imshow ("melns taisnstūris (krāsa)", attēls) cv2.imshow ("melns taisnstūris (melnbalts)", image_bw)
Līnija
#izveidojiet līniju virs melnā kvadrāta # cv2.līnija (attēls, sākuma koordinātas, beigu koordinātas, krāsa, biezums) # 5 pikseļu biezuma diagonālās līnijas zīmēšana image = np.zeros ((512 512,3), np.uint8) cv2.line (attēls, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("zilā līnija", attēls)
Taisnstūris
#izveidojiet taisnstūri virs melna kvadrāta # cv2. taisnstūris (attēls, sākuma koordinātas, beigu koordinātas, krāsa, biezums) # 5 pikseļu biezuma taisnstūra zīmēšana image = np.zeros ((512 512,3), np.uint8) cv2. taisnstūris (attēls, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("taisnstūris", attēls)
# apļa izveide virs melna kvadrāta # cv2.circle (attēls, centrs, rādiuss, krāsa, aizpildījums) image = np.zeros ((512 512,3), np.uint8) cv2.circle (image, (100,100), (50), (255 127,0), - 1) cv2.imshow ("aplis", attēls)
# daudzstūra attēla izveide = np.zeros ((512 512,3), np.uint8) #lets definē četrus punktus pts = np.array (,,,], np.int32) #lets tagad pārveido mūsu punktus tādā formā, kā to prasa polylines punkti = pts.reshape ((- 1,1,2)) cv2.polylines (attēla,, True, (0255255), 3) cv2.imshow ("daudzstūris", attēlu)
# teksta ievietošana, izmantojot opencv # cv2.putText (attēls, 'parādāms teksts', sāknēšanas kreisā sākuma punkts, fonts, fonta lielums, krāsa, biezums) image = np.zeros ((512 512,3), np.uint8) cv2. putText (attēls, "sveika pasaule", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("sveika pasaule", attēls) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision un OpenCV ir ļoti plaši aplūkojamas tēmas, taču šī rokasgrāmata būtu labs sākumpunkts, lai apgūtu OpenCV un attēlu apstrādi.