Vispirms instalēsim OpenCV:
pip3 instalējiet opencv-pythonLasī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 cv2attē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 cv2attē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ā npimportē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ā npimportē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ā npimportē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 cv2sagū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 cv2sagū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 cv2sagū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!