Nejprve si nainstalujte OpenCV:
pip3 nainstalujte opencv-pythonČtení a zobrazování obrázků
První věcí, kterou se musíme naučit, je číst a psát obrázky. Čtení obrazového souboru, zadání úplné cesty k souboru nebo názvu souboru (pokud je soubor ve složce python) a přidání příznaku se provádí pomocí cv2.imread (). Příznak může mít hodnotu 1 (pro barevný obrázek), 0 (pro stupně šedi) nebo -1 (pro barevný obrázek s kanály). Jeden může použít cv2.funkce imshow () pro zobrazení obrázku; zde jsou předány dva argumenty - název obrázku a obrázek, který se má zobrazit. Dále použijeme cv2.funkce waitKey () pro čekání na vstup z klávesnice; a 0 pro cv2.Funkce waitKey (0) znamená trvalou dobu čekání. Na druhou stranu cv2.funkce destruAllWindows () zavře okna.
Toto načte a otevře obrázek a ponechá obrázek otevřený, dokud jej nezavřete:
import cv2obrázek = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('obrázek', obrázek)
cv2.waitKey (0)
cv2.destruAllWindows ()
Psát obrázky
Používáme CV2.funkce imwrite () pro uložení obrázku. Tato funkce má dva parametry - název pro uložení obrázku a obrázek, který chcete uložit.
import cv2obrázek = cv2.imread ('identifikovat.jpg ', -1)
cv2.imwrite ('save_image.png ', obrázek)
Zachyťte video z webové kamery
Abychom mohli pořídit videa, začneme inicializací cv2.Funkce VideoCapture (). Potom používáme smyčku „while“ k dalšímu pořizování videa. Zatímco uživatel nestlačí klávesu exit, můžeme číst snímky a zobrazovat je pomocí read () a cv2.funkce imshow (). Poté jsme vložili klávesu „break“ pro opuštění smyčky; v tomto případě je číslo 27 klíč ESC. Pokud uživatel stiskne klávesu ESC, vymaní se ze smyčky. Jakmile jste mimo smyčku, je nutné uvolnit zachycení.
importovat numpy jako npimport cv2
capture = cv2.VideoCapture (0)
while (True):
ret, frame = zachycení.číst()
cv2.imshow ('rám', rám)
pokud cv2.waitKey (1) & 0xFF == 27:
přestávka
zajmout.uvolnění()
cv2.destruAllWindows ()
Přehrávání video souboru
Přehrávání videosouboru je jako pořizování videa z webové kamery. K tomu cv2.Je použita funkce VideoCapture (); do funkce se poté přidá název videosouboru, který chcete přehrát. Smyčka „while“ je znovu použita a klávesa exit je v tomto případě klávesou „s“ na klávesnici. Tím se otevře a přehraje video soubor a zavře se, když uživatel stiskne klávesu „s“.
importovat numpy jako npimport cv2
capture = cv2.VideoCapture („Megamind.avi ")
while (True):
ret, frame = zachycení.číst()
cv2.imshow ('rám', rám)
pokud cv2.waitKey (1) & 0xFF == ord ("s"):
přestávka
zajmout.uvolnění()
cv2.destruAllWindows ()
Uložení video souboru
Uložení videosouboru vyžaduje trochu více práce. CV2.Funkce VideoWriter () má celkem 4 parametry - název výstupního souboru, kód FourCC, počet snímků za sekundu a velikost snímku. Dále je třeba určit kód FourCC, což je video kodek využívající cv2.Funkce VideoWriter_fourcc (). Použití zachycení.isOpened (), čteme rámec a zapisujeme výstupní rámec. Můžeme také zobrazit rámečky pomocí cv2.funkce imshow (). Potom použijeme cv2.waitKey (1) & 0xFF == ord ('s') pro nastavení klávesy ukončení. V tomto případě, pokud uživatel stiskne klávesu „s“, opustí smyčku a poté uvolní zachycení a výstup a zavře okna.
importovat numpy jako npimport cv2
capture = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
výstup = cv2.VideoWriter ('výstup.avi ', fourcc, 30.0, (640 480))
while (zachytit.isOpened ()):
ret, frame = zachycení.číst()
výstup.zápis (rám)
cv2.imshow ('rám', rám)
pokud cv2.waitKey (1) & 0xFF == ord ('s'):
přestávka
zajmout.uvolnění()
výstup.uvolnění()
cv2.destruAllWindows ()
Kreslení čar, kruhů, obdélníků a textů
První věc, kterou se naučíme kreslit, je čára. K nakreslení čáry jednoduše použijeme cv2.funkce line (). Funkce přijímá 5 argumentů - zdrojové video, počáteční bod, koncový bod, barvu a tloušťku čáry. V následujícím případě jsme se rozhodli nakreslit obdélníkový okraj (tvořený 4 řádky):
import cv2capture = cv2.VideoCapture ('vtest.avi ')
zatímco je pravda:
ret, frame = zachycení.číst()
width = int (zachycení.získat (3))
výška = int (zachycení.získat (4))
řádek1 = cv2.line (frame, (0,0), (0, height), (255, 255, 255), 10)
line2 = cv2.line (line1, (0, 0), (width, 0), (255, 255, 255), 10)
řádek3 = cv2.řádek (řádek2, (0, výška), (šířka, výška), (255, 255, 255), 10)
řádek4 = cv2.řádek (řádek3, (šířka, 0), (šířka, výška), (255, 255, 255), 10)
cv2.imshow ('frame', line4)
pokud cv2.waitKey (40) == ord ('q'):
přestávka
zajmout.uvolnění()
cv2.destruAllWindows ()
Dále do videa nakreslíme kruh i obdélník. K nakreslení obdélníku použijeme cv2.obdélník () funkce, která bere 5 argumentů podobně jako řádek. K nakreslení kruhu použijeme funkci cv2.circle (), který má také 5 argumentů - zdrojové video, střed, poloměr, barvu a tloušťku.
import cv2capture = cv2.VideoCapture ('vtest.avi ')
zatímco je pravda:
ret, frame = zachycení.číst()
width = int (zachycení.získat (3))
výška = int (zachycení.získat (4))
obdélník = cv2.obdélník (rám, (150, 15), (650, 550), (0,0,0), 11)
cv2.kruh (obdélník, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('rám', rám)
pokud cv2.waitKey (40) == ord ('q'):
přestávka
zajmout.uvolnění()
cv2.destruAllWindows ()
Nyní přidejme text k videu, které máme. K tomu je třeba zadat písmo; zde jsme vybrali cv2.FONT_HERSHEY_SIMPLEX. Jakmile je písmo vybráno, můžeme použít funkci cv2.putText () za zbytek. CV2.putText () trvá 8 argumentů - zdrojové video, text, který chcete napsat, místo, kam chcete, písmo, zvětšení, barva, tloušťka a CV2.LINE_AA (díky čemuž vše vypadá lépe).
import cv2capture = cv2.VideoCapture ('vtest.avi ')
zatímco je pravda:
ret, frame = zachycení.číst()
width = int (zachycení.získat (3))
výška = int (zachycení.získat (4))
font = cv2.FONT_HERSHEY_SIMPLEX
obrázek = cv2.putText (rám, "VTEST.AVI ", (200, 200), písmo, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('rám', obrázek)
pokud cv2.waitKey (40) == ord ('q'):
přestávka
zajmout.uvolnění()
cv2.destruAllWindows ()
OpenCV je schopen mnoha skvělých věcí, kde člověk musí někde začít. Mohlo by se učit vytvářet a ukládat obrázky a videa. V tomto tutoriálu jsme se naučili dělat úplně základy počítačového vidění.
Šťastné kódování!