Pirmiausia įdiekime „OpenCV“:
„pip3“ įdiekite „opencv-python“Skaityti ir rodyti vaizdus
Pirmas dalykas, kurį turime išmokti, yra skaityti ir rašyti vaizdus. Vaizdo failo skaitymas, viso failo kelio ar failo pavadinimo įvedimas (jei failas yra „Python“ aplanke) ir vėliavos pridėjimas atliekamas naudojant „cv2“.perskaityti (). Vėliavos reikšmė gali būti 1 (spalvotam vaizdui), 0 (pilkai tonui) arba -1 (spalvotam vaizdui su kanalais). Galima naudoti cv2.funkcija imshow () vaizdui parodyti; čia pateikiami du argumentai - paveikslėlio pavadinimas ir rodomas vaizdas. Toliau mes naudojame „cv2“.waitKey () funkcija laukti klaviatūros įvesties; a 0 už cv2.waitKey (0) funkcija reiškia nuolatinį laukimo laiką. Kita vertus, cv2.funkcija destrAllWindows () uždarys langus.
Taip vaizdas bus atidarytas ir atidarytas, o vaizdas bus atidarytas, kol jį uždarysite:
importuoti cv2vaizdas = cv2.imread ('LinuxLogo.JPG ', 1)
cv2.imshow ('vaizdas', vaizdas)
cv2.waitKey (0)
cv2.destrAllWindows ()
Rašykite vaizdus
Mes naudojame cv2.„imwrite“) funkcija išsaugoti vaizdą. Šiai funkcijai reikalingi du parametrai - vardas, skirtas vaizdui išsaugoti, ir vaizdas, kurį norite išsaugoti.
importuoti cv2vaizdas = cv2.perskaityti ('identifikuoti.JPG ', -1)
cv2.imwrite ('save_image.png ', vaizdas)
Užfiksuokite vaizdo įrašą iš interneto kameros
Norėdami užfiksuoti vaizdo įrašus, pirmiausia inicijuokime cv2.„VideoCapture“) funkcija. Tada mes naudojame „while“ kilpą, kad galėtume toliau fiksuoti vaizdo įrašą. Nors vartotojas nespaudžia išėjimo klavišo, mes galime perskaityti rėmelius ir juos parodyti naudodami read () ir cv2.imshow () funkcija. Tada mes įdedame "pertraukos" raktą, kad išeitumėte iš kilpos; šiuo atveju skaičius 27 yra ESC raktas. Jei vartotojas paspaudžia ESC klavišą, jis išeina iš kilpos. Išėjus iš ciklo, būtina atleisti užfiksavimą.
importuoti numerį kaip npimportuoti cv2
užfiksuoti = cv2.„VideoCapture“ (0)
o (Tiesa):
ret, kadras = fiksuoti.skaityti ()
cv2.imshow ('rėmelis', rėmelis)
jei cv2.waitKey (1) & 0xFF == 27:
pertrauka
užfiksuoti.išleisti ()
cv2.destrAllWindows ()
Vaizdo failo atkūrimas
Vaizdo failo paleidimas yra tarsi vaizdo įrašo fiksavimas iš interneto kameros. Norėdami tai padaryti, cv2.Naudojama „VideoCapture“) funkcija; tada prie funkcijos pridedamas vaizdo failo, kurį norite leisti, pavadinimas. Vėl naudojama „while“ kilpa, o šiuo atveju išėjimo klavišas yra klaviatūros „s“ klavišas. Tai atidarys ir atkurs vaizdo failą ir uždarys, kai vartotojas paspaus „s“ klavišą.
importuoti numerį kaip npimportuoti cv2
užfiksuoti = cv2.„VideoCapture“ („Megamind.avi ")
o (Tiesa):
ret, kadras = fiksuoti.skaityti ()
cv2.imshow ('rėmelis', rėmelis)
jei cv2.waitKey (1) & 0xFF == ord ("s"):
pertrauka
užfiksuoti.išleisti ()
cv2.destrAllWindows ()
Vaizdo failo išsaugojimas
Norėdami išsaugoti vaizdo failą, reikia šiek tiek daugiau dirbti. CV2.„VideoWriter“ () funkcijai iš viso reikia 4 parametrų - išvesties failo pavadinimo, „FourCC“ kodo, kadrų per sekundę skaičiaus ir kadro dydžio. Be to, reikia nurodyti „FourCC“ kodą - vaizdo kodeką, naudojantį „cv2“.„VideoWriter_fourcc“ () funkcija. Naudojant fiksavimą.isOpened (), mes skaitome rėmelį ir rašome išvesties rėmelį. Rėmelius taip pat galime parodyti naudodami „cv2“.imshow () funkcija. Tada mes naudojame „cv2“.waitKey (1) & 0xFF == ord ('s') nustatyti išėjimo raktą. Tokiu atveju, jei vartotojas paspaus „s“ klavišą, jis išeis iš ciklo, tada atleis fiksavimą ir išvestį ir uždarys langus.
importuoti numerį kaip npimportuoti cv2
užfiksuoti = cv2.„VideoCapture“ (0)
fourcc = cv2.„VideoWriter_fourcc“ (* 'XVID')
išvestis = cv2.„VideoWriter“ ('išvestis.avi “, keturiųcccc, 30.0, (640 480))
o (užfiksuoti.isOpened ()):
ret, kadras = fiksuoti.skaityti ()
produkcija.rašyti (rėmelis)
cv2.imshow („rėmas“, rėmelis)
jei cv2.waitKey (1) & 0xFF == ord ('s'):
pertrauka
užfiksuoti.išleisti ()
produkcija.išleisti ()
cv2.destrAllWindows ()
Linijų, apskritimų, stačiakampių ir tekstų piešimas
Pirmas dalykas, kurį išmoksime piešti, yra linija. Norėdami nubrėžti liniją, mes tiesiog naudojame cv2.linijos () funkcija. Funkcijai reikalingi 5 argumentai - šaltinio vaizdo įrašas, pradinis taškas, pabaigos taškas, spalva ir linijos storis. Tokiu atveju nusprendėme nubrėžti stačiakampę sieną (sudarytą iš 4 linijų):
importuoti cv2užfiksuoti = cv2.„VideoCapture“ ('vtest.avi ')
o tiesa:
ret, kadras = fiksuoti.skaityti ()
plotis = int (fiksuoti.gauti (3))
aukštis = int (fiksuoti.gauti (4))
1 eilutė = cv2.linija (rėmas, (0,0), (0, aukštis), (255, 255, 255), 10)
linija2 = cv2.eilutė (1 eilutė, (0, 0), (plotis, 0), (255, 255, 255), 10)
3 eilutė = cv2.linija (2 eilutė, (0, aukštis), (plotis, aukštis), (255, 255, 255), 10)
4 eilutė = cv2.eilutė (3 eilutė, (plotis, 0), (plotis, aukštis), (255, 255, 255), 10)
cv2.„imshow“ („rėmas“, 4 eilutė)
jei cv2.waitKey (40) == ord ('q'):
pertrauka
užfiksuoti.išleisti ()
cv2.destrAllWindows ()
Tada ant vaizdo įrašo nupiešime apskritimą ir stačiakampį. Norėdami nupiešti stačiakampį, mes naudojame cv2.stačiakampio () funkcija, kuri užima 5 argumentus, panašiai kaip eilutė. Norėdami nupiešti apskritimą, naudojame funkciją cv2.apskritimas (), kuriam taip pat reikalingi 5 argumentai - šaltinio vaizdo įrašas, centro taškas, spindulys, spalva ir storis.
importuoti cv2užfiksuoti = cv2.„VideoCapture“ ('vtest.avi ')
o tiesa:
ret, kadras = fiksuoti.skaityti ()
plotis = int (fiksuoti.gauti (3))
aukštis = int (fiksuoti.gauti (4))
stačiakampis = cv2.stačiakampis (rėmas, (150, 15), (650, 550), (0,0,0), 11)
cv2.apskritimas (stačiakampis, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('rėmelis', rėmelis)
jei cv2.waitKey (40) == ord ('q'):
pertrauka
užfiksuoti.išleisti ()
cv2.destrAllWindows ()
Dabar pridėkime šiek tiek teksto prie turimo vaizdo įrašo. Norėdami tai padaryti, turime nurodyti šriftą; čia mes pasirinkome cv2.FONT_HERSHEY_SIMPLEX. Pasirinkę šriftą, galime naudoti funkciją cv2.„putText“ () atliks visa kita. Cv2.„putText“ () užima 8 argumentus - šaltinio vaizdo įrašą, norimą parašyti tekstą, vietą, kurioje norite, šriftą, padidinimą, spalvą, storį ir „cv2“.LINE_AA (todėl viskas atrodo geriau).
importuoti cv2užfiksuoti = cv2.„VideoCapture“ ('vtest.avi ')
o tiesa:
ret, kadras = fiksuoti.skaityti ()
plotis = int (fiksuoti.gauti (3))
aukštis = int (fiksuoti.gauti (4))
font = cv2.FONT_HERSHEY_SIMPLEX
vaizdas = cv2.putText (frame, "VTEST.AVI ", (200, 200), šriftas, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow („rėmas“, vaizdas)
jei cv2.waitKey (40) == ord ('q'):
pertrauka
užfiksuoti.išleisti ()
cv2.destrAllWindows ()
„OpenCV“ gali atlikti daugybę puikių dalykų, kai reikia pradėti nuo kažkur. Tai gali būti mokymasis kurti ir išsaugoti vaizdus ir vaizdo įrašus. Šioje pamokoje mes išmokome atlikti pačius kompiuterio matymo pagrindus.
Laimingo kodavimo!