Először telepítsük az OpenCV-t:
pip3 telepítse az opencv-python programotKépek olvasása és megjelenítése
Az első dolog, amit meg kell tanulnunk, az a képek olvasása és írása. Képfájl olvasása, a fájl teljes elérési útjának vagy a fájlnév megadása (ha a fájl a python mappában van), és egy zászló hozzáadása a cv2 használatával történik.imread (). A zászló értéke 1 (színes kép esetén), 0 (szürkeárnyalatos) vagy -1 (csatornás színes kép esetén). Használható a cv2.imshow () függvény a kép megjelenítéséhez; itt két érvet adunk át - a kép nevét és a megjelenítendő képet. Ezután a cv2-t használjuk.waitKey () függvény a billentyűzet bevitelének megvárására; a 0 a cv2 esetén.waitKey (0) függvény állandó várakozási időt jelent. Viszont a cv2.A destrAllWindows () függvény bezárja az ablakokat.
Ez elolvassa és megnyitja a képet, és nyitva tartja a képet, amíg bezárja:
import cv2kép = cv2.imread ('LinuxLogo.JPG ”, 1)
cv2.imshow ('kép', kép)
cv2.waitKey (0)
cv2.destrAllWindows ()
Képek írása
A cv2-t használjuk.imwrite () funkció a kép mentéséhez. Ennek a funkciónak két paramétere van - egy név a kép mentéséhez és a menteni kívánt kép.
import cv2kép = cv2.imread ('azonosít.JPG ', -1)
cv2.imwrite ('save_image.png ', kép)
Videó rögzítése webkameráról
Videók rögzítéséhez először a cv2 inicializálásával kezdjük.VideoCapture () funkció. Ezután egy „while” hurok segítségével folytatjuk a videó rögzítését. Míg a felhasználó nem nyomja meg a kilépés gombot, a kereteket elolvashatjuk és megjeleníthetjük a read () és a cv2 segítségével.imshow () függvény. Ezután beleteszünk egy „break” billentyűt a hurokból való kilépéshez; ebben az esetben a 27-es szám az ESC-kulcs. Ha a felhasználó megnyomja az ESC gombot, kitör a hurokból. A hurokból való kilépés után el kell engedni a rögzítést.
importálja a számot, mint npimport cv2
elfog = cv2.VideoCapture (0)
míg (Igaz):
ret, frame = elfog.olvas()
cv2.imshow ('keret', keret)
ha cv2.waitKey (1) & 0xFF == 27:
szünet
elfog.kiadás()
cv2.destrAllWindows ()
Videofájl lejátszása
Videofájl lejátszása olyan, mint egy videó rögzítése webkameráról. Ehhez a cv2.A VideoCapture () függvényt használják; A lejátszani kívánt videofájl neve hozzáadódik a funkcióhoz. A „while” ciklust újra használjuk, és ebben az esetben a kilépési kulcs a billentyűzet “s” gombja. Ez megnyitja és lejátszja a videofájlt, és bezárja, amikor a felhasználó megnyomja az „s” gombot.
importálja a numpy-t np-kéntimport cv2
elfog = cv2.VideoCapture ("Megamind.avi ")
míg (Igaz):
ret, frame = elfog.olvas()
cv2.imshow ('keret', keret)
ha cv2.waitKey (1) & 0xFF == ord ("s"):
szünet
elfog.kiadás()
cv2.destrAllWindows ()
Videofájl mentése
A videofájl mentése kicsit több munkát igényel. A cv2.A VideoWriter () függvény összesen 4 paramétert vesz fel - a kimeneti fájl nevét, a FourCC kódot, a képkocka másodpercenkénti számát és a képméretet. Továbbá meg kell adni a FourCC kódot, amely a cv2-t használó videokodek.VideoWriter_fourcc () függvény. A rögzítés használata.isOpened (), elolvassuk a keretet és megírjuk a kimeneti keretet. A kereteket a cv2 segítségével is megmutathatjuk.imshow () függvény. Ezután a cv2-t használjuk.waitKey (1) & 0xFF == ord ('s') a kilépési kulcs beállításához. Ebben az esetben, ha a felhasználó megnyomja az „s” gombot, kilép a ciklusból, majd felszabadítja a rögzítést és a kimenetet, és bezárja az ablakokat.
importálja a numpy-t np-kéntimport cv2
elfog = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
kimenet = cv2.VideoWriter ('kimenet.avi ', négy köbcentis, 30.0, (640,480))
míg (elfog.isOpened ():
ret, frame = elfog.olvas()
Kimenet.ír (keret)
cv2.imshow ('keret', keret)
ha cv2.waitKey (1) & 0xFF == ord ('s'):
szünet
elfog.kiadás()
Kimenet.kiadás()
cv2.destrAllWindows ()
Vonalak, körök, téglalapok és szövegek rajzolása
Az első dolog, amit megtanulunk rajzolni, egy vonal. Vonal megrajzolásához egyszerűen a cv2-t használjuk.line () függvény. A függvény 5 argumentumot vesz fel - a forrásvideót, a kezdőpontot, a végpontot, a színt és a vonal vastagságát. A következő esetben úgy döntöttünk, hogy megrajzolunk egy téglalap alakú (4 vonalból álló) szegélyt:
import cv2elfog = cv2.VideoCapture ('vtest.avi ')
míg True:
ret, frame = elfog.olvas()
szélesség = int (elfogás.kap (3))
magasság = int (elfogás.kap (4))
line1 = cv2.vonal (keret, (0,0), (0, magasság), (255, 255, 255), 10)
2. sor = cv2.vonal (1. sor, (0, 0), (szélesség, 0), (255, 255, 255), 10)
3. sor = cv2.vonal (2. sor, (0, magasság), (szélesség, magasság), (255, 255, 255), 10)
4. sor = cv2.vonal (3. sor, (szélesség, 0), (szélesség, magasság), (255, 255, 255), 10)
cv2.imshow ('keret', 4. sor)
ha cv2.waitKey (40) == ord ('q'):
szünet
elfog.kiadás()
cv2.destrAllWindows ()
Ezután kört és téglalapot is rajzolunk a videóra. Téglalap rajzolásához a cv2-t használjuk.rectangle () függvény, amely 5 argumentumot vesz fel, hasonlóan a vonalhoz. Kör rajzolásához a cv2 függvényt használjuk.kör (), amely szintén 5 argumentumot vesz fel - a forrás videó, a középpont, a sugár, a szín és a vastagság.
import cv2elfog = cv2.VideoCapture ('vtest.avi ')
míg True:
ret, frame = elfog.olvas()
szélesség = int (elfogás.kap (3))
magasság = int (elfogás.kap (4))
téglalap = cv2.téglalap (keret, (150, 15), (650, 550), (0,0,0), 11)
cv2.kör (téglalap, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('keret', keret)
ha cv2.waitKey (40) == ord ('q'):
szünet
elfog.kiadás()
cv2.destrAllWindows ()
Tegyünk hozzá néhány szöveget a videóhoz. Ehhez meg kell adnunk egy betűtípust; itt a cv2-t választottuk.FONT_HERSHEY_SIMPLEX. A betűtípus kiválasztása után használhatjuk a cv2 függvényt.putText () a többihez. Cv2.A putText () 8 argumentumot vesz fel - a forrásvideót, az írni kívánt szöveget, a kívánt helyet, a betűtípust, a nagyítást, a színt, a vastagságot és a cv2-t.LINE_AA (amitől minden jobban néz ki).
import cv2elfog = cv2.VideoCapture ('vtest.avi ')
míg True:
ret, frame = elfog.olvas()
szélesség = int (elfogás.kap (3))
magasság = int (elfogás.kap (4))
font = cv2.FONT_HERSHEY_SIMPLEX
kép = cv2.putText (keret, "VTEST.AVI ", (200, 200), betűtípus, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('keret', kép)
ha cv2.waitKey (40) == ord ('q'):
szünet
elfog.kiadás()
cv2.destrAllWindows ()
Az OpenCV sok nagy dologra képes, ahol valahol el kell kezdeni. Megtanulhat képeket és videókat létrehozni és menteni. Ebben az oktatóanyagban megtanultuk elvégezni a számítógépes látás alapjait.
Boldog kódolás!