Wizja komputerowa Podstawy

Wizja komputerowa Podstawy
OpenCV (Open Source Computer Vision Library) to moduł Python używany do wizji komputerowej. OpenCV to bezpłatny moduł open source, który zawiera setki algorytmów do wykonywania różnych zadań. Wszystko, od rozpoznawania twarzy po wykrywanie ruchu, można wykonać za pomocą OpenCV. Jednak w tym przewodniku przyjrzymy się podstawom OpenCV.

Najpierw zainstalujmy OpenCV:

PIP3 Zainstaluj OpenCV-Python

Przeczytaj i pokazuj obrazy

Pierwszą rzeczą, której musimy się nauczyć, jest czytanie i pisanie obrazów. Czytanie pliku obrazu, wprowadzanie pełnej ścieżki do pliku lub nazwy pliku (jeśli plik znajduje się w folderze Python), a dodanie flagi odbywa się za pomocą CV2.imread (). Flaga może przyjąć wartość 1 (dla obrazu kolorowego), 0 (dla skali szarości) lub -1 (dla obrazu kolorowego z kanałami). Można użyć CV2.ImShow () funkcja, aby pokazać obraz; Tutaj przekazane są dwa argumenty - nazwa obrazu i obrazu do wyświetlenia. Następnie używamy CV2.Funkcja WaitKey (), aby czekać na wejście klawiatury; A 0 dla CV2.Funkcja Waitkey (0) implikuje stały czas oczekiwania. Z drugiej strony CV2.Funkcja niszczącaldindows () zamknie system Windows.

To przeczyta i otworzy obraz i utrzymuje obraz otwarty, aż go zamkniesz:

Importuj CV2
obraz = CV2.Imread („Linuxlogo.jpg ', 1)
CV2.Imshow („obraz”, obraz)
CV2.Waitkey (0)
CV2.DestroyallWindows ()

Napisz obrazy

Używamy CV2.Funkcja imwrite (), aby zapisać obraz. Ta funkcja przyjmuje dwa parametry - nazwa zapisania obrazu i obrazu, który chcesz zapisać.

Importuj CV2
obraz = CV2.Imread („Zidentyfikuj.jpg ', -1)
CV2.imwrite ('save_image.png ', obraz)

Przechwytywanie wideo z kamery internetowej

Aby uchwycić filmy, zaczynamy od zainicjowania CV2.Funkcja videoCapture (). Następnie używamy pętli „while”, aby kontynuować przechwytywanie wideo. Podczas gdy użytkownik nie naciska klawisza wyjścia, możemy odczytać ramki i pokazać je za pomocą czytania () i CV2.Funkcja imshow (). Następnie wkładamy klucz „przerwy”, aby wyjść z pętli; W takim przypadku liczba 27 jest kluczem ESC. Jeśli użytkownik naciska klawisz ESC, wyrywa się z pętli. Po wyjściu z pętli konieczne jest zwolnienie schwytania.

importować Numpy jako NP
Importuj CV2
Capture = CV2.Videokapture (0)
While (prawda):
RET, ramka = przechwytywanie.Czytać()
CV2.Imshow („ramka”, ramka)
Jeśli CV2.Waitkey (1) i 0xff == 27:
przerwa
schwytać.uwolnienie()
CV2.DestroyallWindows ()

Odtwarzanie pliku wideo

Odtwarzanie pliku wideo jest jak uchwycenie wideo z kamery internetowej. Aby to zrobić, CV2.Używana jest funkcja VideOcapture (); Nazwa pliku wideo, którą chcesz odtworzyć, jest następnie dodawana do funkcji. Pętla „While” jest ponownie używana, a klawisz wyjściowy w tym przypadku jest klawiszem „S” na klawiaturze. To otworzy i odtworzy plik wideo i zamyka go, gdy użytkownik naciśnie klawisz „S”.

importować Numpy jako NP
Importuj CV2
Capture = CV2.Wideokapture („megamind.avi ”)
While (prawda):
RET, ramka = przechwytywanie.Czytać()
CV2.Imshow („ramka”, ramka)
Jeśli CV2.Waitkey (1) i 0xff == ord („s”):
przerwa
schwytać.uwolnienie()
CV2.DestroyallWindows ()

Zapisywanie pliku wideo

Zapisywanie pliku wideo wymaga nieco więcej pracy. CV2.Funkcja videowriter () przyjmuje w sumie 4 parametry - nazwa pliku wyjściowego, kod Fourcc, liczba klatek na sekundę i rozmiar ramki. Ponadto należy określić kod Fourcc, czyli kodek wideo za pomocą CV2.Funkcja videowriter_fourcc (). Za pomocą przechwytywania.isopened (), czytamy ramkę i piszemy ramkę wyjściową. Możemy również pokazać ramki za pomocą CV2.Funkcja imshow (). Następnie używamy CV2.Waitkey (1) i 0xff == ord ('s'), aby ustawić klucz wyjściowy. W takim przypadku, jeśli użytkownik naciśnie klawisz „S”, wyjdzie z pętli, a następnie zwolni przechwytywanie i wyjście i zamyka system Windows.

importować Numpy jako NP
Importuj CV2
Capture = CV2.Videokapture (0)
Fourcc = CV2.Videowriter_fourcc (*„xvid”)
wyjście = CV2.Videowriter („wyjście.avi ', Fourcc, 30.0, (640,480))
When (przechwytywanie.jest otwarty()):
RET, ramka = przechwytywanie.Czytać()
wyjście.Napisz (ramka)
CV2.Imshow („ramka”, ramka)
Jeśli CV2.Waitkey (1) i 0xff == ord ('s'):
przerwa
schwytać.uwolnienie()
wyjście.uwolnienie()
CV2.DestroyallWindows ()

Linie rysunkowe, koła, prostokąty i teksty

Pierwszą rzeczą, którą nauczymy się rysować, jest linia. Aby narysować linię, po prostu używamy CV2.funkcja linii (). Funkcja przyjmuje 5 argumentów - wideo źródłowe, punkt początkowy, punkt końcowy, kolor i grubość linii. W poniższym przypadku postanowiliśmy narysować prostokątną granicę (składającą się z 4 linii):

Importuj CV2
Capture = CV2.Videokapture („VTEST.avi ')
Choć prawda:
RET, ramka = przechwytywanie.Czytać()
szerokość = int (przechwytywanie.Get (3))
wysokość = int (przechwytywanie.Get (4))
LINE1 = CV2.linia (rama, (0,0), (0, wysokość), (255, 255, 255), 10)
LINE2 = CV2.Linia (linia1, (0, 0), (szerokość, 0), (255, 255, 255), 10)
Line3 = CV2.Linia (linia 2, (0, wysokość), (szerokość, wysokość), (255, 255, 255), 10)
Line4 = CV2.linia (linia3, (szerokość, 0), (szerokość, wysokość), (255, 255, 255), 10)
CV2.Imshow („ramka”, linia4)
Jeśli CV2.Waitkey (40) == Ord („Q '):
przerwa
schwytać.uwolnienie()
CV2.DestroyallWindows ()

Następnie narysujemy okrąg i prostokąt na filmie. Aby narysować prostokąt, używamy CV2.funkcja recGang (), która przyjmuje 5 argumentów podobnie jak linia. Aby narysować okrąg, używamy funkcji CV2.Circle (), który również przyjmuje 5 argumentów - wideo źródłowe, punkt środkowy, promień, kolor i grubość.

Importuj CV2
Capture = CV2.Videokapture („VTEST.avi ')
Choć prawda:
RET, ramka = przechwytywanie.Czytać()
szerokość = int (przechwytywanie.Get (3))
wysokość = int (przechwytywanie.Get (4))
Rectangle = CV2.prostokąt (ramka, (150, 15), (650, 550), (0,0,0), 11)
CV2.okrąg (prostokąt, (250, 250), 60, (0,0,0), 11)
CV2.Imshow („ramka”, ramka)
Jeśli CV2.Waitkey (40) == Ord („Q '):
przerwa
schwytać.uwolnienie()
CV2.DestroyallWindows ()

Teraz dodajmy tekst do filmu, który mamy. Aby to zrobić, musimy określić czcionkę; Tutaj wybraliśmy CV2.Font_hershey_simplex. Po wybraniu czcionki możemy użyć funkcji CV2.putText () do reszty. CV2.putText () bierze 8 argumentów - wideo źródłowe, tekst, który chcesz napisać, pozycja, w której chcesz, czcionka, powiększenie, kolor, grubość i cv2.Line_aa (co sprawia, że ​​wszystko wygląda lepiej).

Importuj CV2
Capture = CV2.Videokapture („VTEST.avi ')
Choć prawda:
RET, ramka = przechwytywanie.Czytać()
szerokość = int (przechwytywanie.Get (3))
wysokość = int (przechwytywanie.Get (4))
czcionka = CV2.Font_hershey_simplex
obraz = CV2.puttext (ramka, „vtest.Avi ", (200, 200), czcionka, 4, (0,0,0), 5, cv2.Line_aa)
CV2.Imshow („ramka”, obraz)
Jeśli CV2.Waitkey (40) == Ord („Q '):
przerwa
schwytać.uwolnienie()
CV2.DestroyallWindows ()

OpenCV jest zdolny do wielu wielkich rzeczy, w których trzeba gdzieś zacząć. Może się nauczyć tworzenie i zapisywanie zdjęć i filmów. W tym samouczku nauczyliśmy się robić podstawy wizji komputerowej.

Szczęśliwe kodowanie!