atidarymas

Kompiuterinio matymo pagrindai

Kompiuterinio matymo pagrindai
„Opencv“ („Open Source Computer Vision Library“) yra „Python“ modulis, naudojamas kompiuterio matymui. „OpenCV“ yra nemokamas atvirojo kodo modulis, kuriame yra šimtai algoritmų įvairioms užduotims atlikti. Viskas nuo veido atpažinimo iki judesio aptikimo gali būti padaryta naudojant „OpenCV“. Tačiau šiame vadove apžvelgsime „OpenCV“ pagrindus.

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 cv2
vaizdas = 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 cv2
vaizdas = 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 np
importuoti 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 np
importuoti 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 np
importuoti 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 cv2
už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 cv2
už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 cv2
už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!

Kaip padidinti FPS sistemoje „Linux“?
FPS reiškia Kadrai per sekundę. FPS užduotis yra išmatuoti kadrų greitį atkuriant vaizdo įrašus ar žaidimus. Paprastais žodžiais, nepertraukiamų viso ...
Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...