opencv

Datorvīzija pamati

Datorvīzija pamati
Opencv (Open Source Computer Vision Library) ir Python modulis, ko izmanto datora redzēšanai. OpenCV ir bezmaksas atvērtā koda modulis, kas satur simtiem algoritmu dažādu uzdevumu veikšanai. Visu, sākot no sejas atpazīšanas līdz kustības noteikšanai, var veikt, izmantojot OpenCV. Tomēr šajā rokasgrāmatā mēs aplūkosim OpenCV pamatus.

Vispirms instalēsim OpenCV:

pip3 instalējiet opencv-python

Lasīt un rādīt attēlus

Pirmā lieta, kas mums jāiemācās, ir attēlu lasīšana un rakstīšana. Attēla faila lasīšana, faila pilnā ceļa ievadīšana vai faila nosaukums (ja fails atrodas mapē python) un karodziņa pievienošana tiek veikta, izmantojot cv2.izlasīt (). Karodziņa vērtība var būt 1 (krāsainam attēlam), 0 (pelēktoņam) vai -1 (krāsainam attēlam ar kanāliem). Var izmantot cv2.funkcija imshow (), lai parādītu attēlu; šeit tiek nodoti divi argumenti - attēla nosaukums un parādāmā attēla nosaukums. Tālāk mēs izmantojam cv2.waitKey () funkcija, lai gaidītu tastatūras ievadi; a 0 attiecībā uz cv2.waitKey (0) funkcija nozīmē pastāvīgu gaidīšanas laiku. No otras puses, cv2.Tiks iznīcināta WindowsAllWindows () funkcija.

Tas nolasīs un atvērs attēlu, un attēls būs atvērts, līdz to aizvērsit:

importēt cv2
attēls = cv2.imread ('LinuxLogo.JPG ', 1)
CV2.imshow ('attēls', attēls)
CV2.waitKey (0)
CV2.destrAllWindows ()

Rakstiet attēlus

Mēs izmantojam cv2.imwrite () funkcija, lai saglabātu attēlu. Šai funkcijai nepieciešami divi parametri - nosaukums attēla saglabāšanai un attēls, kuru vēlaties saglabāt.

importēt cv2
attēls = cv2.imread ('identificēt.JPG ', -1)
CV2.uzrakstīt ('save_image.png ', attēls)

Uzņemiet video no tīmekļa kameras

Lai uzņemtu videoklipus, vispirms inicializējam cv2.VideoCapture () funkcija. Pēc tam mēs izmantojam “kamēr” cilpu, lai turpinātu videoklipa tveršanu. Kamēr lietotājs nespiež izejas taustiņu, mēs varam lasīt rāmjus un tos parādīt, izmantojot read () un cv2.imshow () funkcija. Pēc tam mēs ievietojam “pārtraukuma” atslēgu, lai izietu no cilpas; šajā gadījumā skaitlis 27 ir ESC atslēga. Ja lietotājs nospiež taustiņu ESC, viņš iziet no cilpas. Kad tas ir ārpus cilpas, ir nepieciešams atbrīvot uztveršanu.

importēt numpy kā np
importēt cv2
sagūstīt = cv2.Video uzņemšana (0)
kamēr (True):
ret, kadrs = tvert.lasīt ()
CV2.imshow ('rāmis', rāmis)
ja cv2.waitKey (1) un 0xFF == 27:
pārtraukums
sagūstīt.atbrīvot ()
CV2.destrAllWindows ()

Video faila atskaņošana

Video faila atskaņošana ir tāda pati kā video uzņemšana no tīmekļa kameras. Lai to izdarītu, cv2.Tiek izmantota funkcija VideoCapture (); Pēc tam funkcijai tiek pievienots video faila nosaukums, kuru vēlaties atskaņot. Atkārtoti tiek izmantota cilpa “while”, un šajā gadījumā izejas taustiņš ir tastatūras taustiņš “s”. Tas atvērs un atskaņos video failu un aizvērs to, kad lietotājs nospiedīs taustiņu “s”.

importēt numpy kā np
importēt cv2
sagūstīt = cv2.VideoCapture ("Megamind.avi ")
kamēr (True):
ret, kadrs = uztveršana.lasīt ()
CV2.imshow ('rāmis', rāmis)
ja cv2.waitKey (1) & 0xFF == ord ("s"):
pārtraukums
sagūstīt.atbrīvot ()
CV2.destrAllWindows ()

Video faila saglabāšana

Video faila saglabāšana prasa nedaudz vairāk darba. CV2.Funkcijai VideoWriter () kopumā ir nepieciešami 4 parametri - izvades faila nosaukums, FourCC kods, kadru skaits sekundē un kadra izmērs. Turklāt ir jānorāda FourCC kods, kas ir video kodeks, izmantojot CV2.Funkcija VideoWriter_fourcc (). Tveršanas izmantošana.isOpened (), mēs lasām rāmi un uzrakstām izvades rāmi. Mēs varam arī parādīt rāmjus, izmantojot cv2.imshow () funkcija. Tad mēs izmantojam cv2.waitKey (1) & 0xFF == ord ('s'), lai iestatītu izejas atslēgu. Šajā gadījumā, ja lietotājs nospiež taustiņu “s”, viņš izies no cilpas, pēc tam atbrīvos tveršanu un izvadi un aizver logus.

importēt numpy kā np
importēt cv2
sagūstīt = cv2.Video uztveršana (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
izeja = cv2.VideoWriter ('izeja.avi ', četri kucci, 30.0, (640 480))
kamēr (sagūstīt.isOpened ()):
ret, kadrs = tvert.lasīt ()
izeja.rakstīt (rāmis)
CV2.imshow ('rāmis', rāmis)
ja cv2.waitKey (1) & 0xFF == ord (s):
pārtraukums
sagūstīt.atbrīvot ()
izlaide.atbrīvot ()
CV2.destrAllWindows ()

Līniju, apļu, taisnstūru un tekstu zīmēšana

Pirmā lieta, ko iemācīsimies uzzīmēt, ir līnija. Lai uzzīmētu līniju, mēs vienkārši izmantojam cv2.line () funkcija. Funkcijai nepieciešami 5 argumenti - avota video, sākuma punkts, beigu punkts, krāsa un līnijas biezums. Šajā gadījumā mēs esam nolēmuši uzzīmēt taisnstūra apmali (sastāv no 4 līnijām):

importēt cv2
sagūstīt = cv2.VideoCapture ('vtest.avi ')
kamēr patiess:
ret, kadrs = tvert.lasīt ()
platums = int (tveršana.saņemt (3))
augstums = int (uztveršana.saņemt (4))
line1 = cv2.līnija (rāmis, (0,0), (0, augstums), (255, 255, 255), 10)
līnija2 = cv2.līnija (1. līnija, (0, 0), (platums, 0), (255, 255, 255), 10)
līnija3 = cv2.līnija (2. līnija, (0, augstums), (platums, augstums), (255, 255, 255), 10)
line4 = cv2.līnija (3. līnija, (platums, 0), (platums, augstums), (255, 255, 255), 10)
CV2.imshow ('rāmis', 4. līnija)
ja cv2.waitKey (40) == ord ('q'):
pārtraukums
sagūstīt.atbrīvot ()
CV2.destrAllWindows ()

Pēc tam videoklipā uzzīmēsim gan apli, gan taisnstūri. Lai uzzīmētu taisnstūri, mēs izmantojam cv2.taisnstūra () funkcija, kurai vajadzīgi 5 argumenti līdzīgi kā līnijā. Lai uzzīmētu apli, mēs izmantojam funkciju cv2.aplis (), kam nepieciešami arī 5 argumenti - avota video, centra punkts, rādiuss, krāsa un biezums.

importēt cv2
sagūstīt = cv2.VideoCapture ('vtest.avi ')
kamēr patiess:
ret, kadrs = tvert.lasīt ()
platums = int (tveršana.saņemt (3))
augstums = int (uztveršana.saņemt (4))
taisnstūris = cv2.taisnstūris (rāmis, (150, 15), (650, 550), (0,0,0), 11)
CV2.aplis (taisnstūris, (250, 250), 60, (0,0,0), 11)
CV2.imshow ('rāmis', rāmis)
ja cv2.waitKey (40) == ord ('q'):
pārtraukums
sagūstīt.atbrīvot ()
CV2.destrAllWindows ()

Tagad pievienosim tekstu mūsu rīcībā esošajam videoklipam. Lai to izdarītu, mums jānorāda fonts; šeit mēs izvēlējāmies cv2.FONT_HERSHEY_SIMPLEX. Kad fonts ir atlasīts, mēs varam izmantot funkciju cv2.putText (), lai veiktu pārējo. CV2.putText () aizņem 8 argumentus - avota video, tekstu, kuru vēlaties rakstīt, vietu, kur vēlaties, fontu, palielinājumu, krāsu, biezumu un cv2.LINE_AA (kas viss izskatās labāk).

importēt cv2
sagūstīt = cv2.VideoCapture ('vtest.avi ')
kamēr patiess:
ret, kadrs = tvert.lasīt ()
platums = int (tveršana.saņemt (3))
augstums = int (uztveršana.saņemt (4))
font = cv2.FONT_HERSHEY_SIMPLEX
attēls = cv2.putText (rāmis, "VTEST.AVI ", (200, 200), fonts, 4, (0,0,0), 5, cv2.LINE_AA)
CV2.imshow ('rāmis', attēls)
ja cv2.waitKey (40) == ord ('q'):
pārtraukums
sagūstīt.atbrīvot ()
CV2.destrAllWindows ()

OpenCV ir spējīgs uz daudzām lielām lietām, kur jāsāk kaut kur. Tas varētu būt mācīšanās veidot un saglabāt attēlus un videoklipus. Šajā apmācībā mēs iemācījāmies veikt pašus datora redzēšanas pamatus.

Laimīgu kodēšanu!

Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...
5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...