- Co to są obrazy?
- Jak komputer przechowuje obrazy
- Dlaczego maszynie trudno jest zidentyfikować obrazy
- Zastosowanie i zastosowania OpenCV
- Instalowanie OpenCV z Pythonem i Anacondą
- Otwieranie i zapisywanie obrazów w OpenCV
- Obraz ze skalowaniem szarości w OpenCV
- Przestrzenie kolorów
- Poznawanie poszczególnych składników obrazu RGB
- Konwersja obrazu do pojedynczego komponentu RGB
- Reprezentacja obrazu na histogramie
- Rysowanie obrazów i kształtów przy użyciu OpenCV
Sztuka to sposób patrzenia i mówią, że widzenie to wiara, ale jest też odwrotnie, wiara to widzenie i naprawdę trudno wyobrazić sobie życie na tym świecie bez daru widzenia - naszych oczu, jak cudownie jest być niemowlęciem kiedy nasze oczy właśnie się otwierają, widzimy świat i zaczynamy rozpoznawać i widzieć świat wokół nas, ale z biegiem czasu to samo wspaniałe doświadczenie staje się przyziemne. Ale w miarę postępu technologii jesteśmy na skraju, na którym maszyny również mogą to zobaczyć i zrozumieć. Obecnie odblokowanie telefonu twarzą nie wydaje się być sci-fi, ale historia rozwoju widzenia maszynowego sięga ponad 20 lat wstecz.
Początkowy formalny krok w tej dziedzinie został podjęty w 1999 r. W ramach inicjatywy Intela, kiedy wszystkie prowadzone badania były prowadzone w ramach OPEN CV (wizja komputerowa Open Source), pierwotnie napisanego w C ++, z pierwszą główną wersją 1.0 w 2006 r. w 2009, trzecie w 2015 i czwarte dopiero w 2018. Teraz OpenCV ma interfejsy C ++, Python i Java i obsługuje systemy Windows, Linux, Mac OS, iOS i Android. Dzięki temu można go łatwo zainstalować w Raspberry Pi w środowisku Python i Linux. Raspberry Pi z OpenCV i dołączoną kamerą może być używany do tworzenia wielu aplikacji do przetwarzania obrazu w czasie rzeczywistym, takich jak wykrywanie twarzy, blokowanie twarzy, śledzenie obiektów, wykrywanie tablic rejestracyjnych samochodów, system bezpieczeństwa w domu itp.
Przed przystąpieniem do nauki przetwarzania obrazu za pomocą openCV ważne jest, aby wiedzieć, czym są obrazy i jak ludzie i maszyny je postrzegają.
Co to są obrazy?
Obrazy są dwuwymiarową reprezentacją widma światła widzialnego. A widmo światła widzialnego to tylko część widma elektromagnetycznego leżącego pomiędzy widmem podczerwieni i ultrafioletu.
Jak powstają obrazy: - gdy światło odbija się od obiektu na folii, czujniku lub siatkówce.
W ten sposób działają nasze oczy, wykorzystując barierę blokującą większość świateł, pozostawiając niewielki otwór, przez który światło może przechodzić, nazywa się aperturą i tworzy bardzo ostry obraz i jest działającym modelem dla kamery otworkowej, ale jest problem w aparacie otworkowym, taka sama ilość światła wpadnie do przysłony, co nie może być odpowiednie dla utworzonego filmu lub obrazu, również nie możemy uzyskać wyostrzonego obrazu, aby wyostrzyć obraz, trzeba przesuwać film w tę iz powrotem, ale jest to problematyczne w wielu sytuacjach.
Lub możemy rozwiązać ten problem za pomocą obiektywów, które pozwalają nam kontrolować rozmiar przysłony, aw fotografii jest to znane jako f Stop, ogólnie niższa wartość f Stop jest lepsza w fotografii.
Rozmiar przysłony pozwala również uzyskać ładną głębię ostrości zwaną w fotografii Bokeh, pozwala nam uzyskać rozmyte tło, gdy skupiamy się na obrazie.
Jak komputer przechowuje obrazy
Być może słyszałeś o różnych formatach obrazów, takich jak.png,.jpgG itp., Wszystko to jest cyfrową reprezentacją naszego analogowego świata, komputery robią to, tłumacząc obraz na kod cyfrowy do przechowywania, a następnie interpretują plik z powrotem na obraz dla pokaz. Ale u podstaw używają wspólnej platformy do przechowywania obrazów i to samo dotyczy openCV.
OpenCV domyślnie używa przestrzeni kolorów RGB (czerwony, zielony i niebieski) dla swoich obrazów, gdzie każda współrzędna piksela (x, y) zawiera 3 wartości z zakresu intensywności w postaci 8-bitowej, tj. (0-255, 2 8).
Mieszanie różnych intensywności każdego koloru daje nam pełne spektrum, dlatego w malarstwie lub sztuce te trzy kolory są traktowane jako kolory podstawowe, a wszystkie inne jako drugorzędne, ponieważ większość kolorów wtórnych może być utworzona przez kolory podstawowe. Podobnie jak dla żółtego, mamy następujące wartości: Czerwony - 255; Zielony - 255; Niebieski - 0.
Teraz obrazy są przechowywane w wielowymiarowych tablicach. W programowaniu tablica to seria kolekcji obiektów. I tutaj mamy do czynienia z trzema rodzajami tablic 1D, 2D i 3D, gdzie „D” oznacza wymiar.
Kolorowe obrazy są przechowywane w trójwymiarowych tablicach, gdzie trzeci wymiar reprezentuje kolory RGB (które zobaczymy później) i razem tworzą różne intensywności pikseli dla obrazu, podczas gdy obrazy czarno-białe są przechowywane w dwuwymiarowych tablicach a także istnieją dwa typy obrazów czarno-białych w skali szarości i obrazy binarne.
Obrazy w skali szarości powstają z odcieni szarości dwuwymiarowej tablicy, podczas gdy obrazy binarne składają się z pikseli czarnych lub białych.
Dlaczego maszynie trudno jest zidentyfikować obrazy
Wizja komputerowa jest sama w sobie trudnym zadaniem, możesz sobie wyobrazić, jak trudno jest nadać maszynie poczucie widzenia, rozpoznawania i identyfikacji. Następujące czynniki sprawiają, że widzenie komputerowe jest tak trudne.
- Czujnik aparatu i ograniczenia obiektywu
- Zobacz warianty punktów
- Zmiana oświetlenia
- skalowanie
- Okluzje
- Wariacje klas obiektów
- Niejednoznaczne obrazy / złudzenia optyczne
Zastosowanie i zastosowania OpenCV
Pomimo trudności, Computer Vision ma wiele historii sukcesu
- Nawigacja robotyczna - samochody autonomiczne
- Wykrywanie i rozpoznawanie twarzy
- Wyszukiwarka grafiki
- Czytanie tablic rejestracyjnych
- Rozpoznawanie pisma odręcznego
- Filtry Snapchata i twarzy
- Rozpoznawanie obiektów
- Śledzenie piłek i graczy w sporcie
- I wiele więcej!
Instalowanie OpenCV z Pythonem i Anacondą
OpenCV jest napisany w C ++, ale bardzo trudno jest go zaimplementować w C ++ i dlatego zdecydowaliśmy się zaimplementować go w języku wysokiego poziomu jako python, a także są dodatkowe korzyści z implementacji OpenCV w pythonie, ponieważ Python jest jednym z najłatwiejszych języków również dla początkujących Jest niezwykle potężny dla aplikacji do nauki danych i uczenia maszynowego, a także przechowuje obrazy w tablicach numpy, co pozwala nam dość łatwo wykonywać bardzo potężne operacje.
Programowanie podstawowe jest przydatne z ekspozycją na matematykę na poziomie szkoły średniej, kamerą internetową, Python 2.7 lub 3.6 (preferowany jest pakiet Anaconda).
Krok 1. Pobierz i zainstaluj pakiet Anaconda Python
Idź do: https://www.anaconda.com/download i wybierz w zależności od pogody swojego komputera jego okna, Linux lub Mac i możesz wybrać wersję Python 2.7 lub Python 3.7 dla systemów 64-bitowych lub 32-bitowych, ale teraz dni większość systemu jest 64-bitowa.
Dystrybucja Pythona Anaconda jest dostarczana wraz ze studiem Spyder, notatnikami jupyter i podpowiedzią anaconda, dzięki czemu Python jest bardzo przyjazny w użyciu. Do robienia przykładów używalibyśmy Spyder Studio.
Wybór między Pythonem 2.7 lub 3.7 jest całkowicie neutralny, ale w przykładach używalibyśmy Pythona 3.7, ponieważ jest to przyszłość Pythona i przejmie Pythona 2.7 od 2020 r., Również większość bibliotek jest rozwijana w Pythonie 3.7. z myślą o przyszłościowym aspekcie Pythona. Daje również oczekiwane wyniki w podstawowych operacjach matematycznych, takich jak (2/5 = 2,5), podczas gdy w Pythonie 2.7 będzie to 2. Również print jest traktowany jako funkcja w Pythonie 3.7 (print („hello”)), więc daje praktyczne wskazówki programistom.
Krok 2. Stworzenie platformy wirtualnej z OpenCV
Zamierzamy zainstalować OpenCV, tworząc wirtualną platformę dla Spydera przy użyciu zachęty Anaconda i przesłanego tutaj pliku YML.
Za pomocą plików YML zainstalujemy wszystkie potrzebne pakiety i biblioteki, ale jeśli chcesz zainstalować dodatkowe pakiety, możesz je łatwo zainstalować za pomocą polecenia anaconda, uruchamiając polecenie tego pakietu.
Przejdź do ikony wyszukiwania w systemie Windows i znajdź terminal zachęty anaconda, możesz go znaleźć w folderze anaconda, który właśnie zainstalowałeś.
Następnie musisz znaleźć pobrany plik YML i stąd masz dwie możliwości zmiany katalogu terminala na lokalizację, w której pobierany jest plik YML, lub skopiuj plik YML do katalogu, w którym najczęściej jest zainstalowana anakonda przypadków znajdowałby się na dysku C: \, po skopiowaniu pliku YML do określonej lokalizacji URUCHOM następujące polecenie w wierszu polecenia
conda env create –f virtual_platform_windows.yml
Ponieważ mój system działa w systemie Windows, plik YML i polecenie odpowiada oknom, jednak można modyfikować zgodnie z systemem, zastępując okna odpowiednio linuxem lub mac.
Uwaga: - Jeśli podczas wyodrębniania pakietu wystąpi błąd, najpierw zainstaluj plik pytorch i numpy, a następnie uruchom powyższe polecenie.
Teraz znajdź nawigator anaconda, a pojawi się rozwijane menu „Aplikacje na ___” i stamtąd wybierz wirtualne środowisko, a stamtąd musisz uruchomić Spyder Studio.
I to wszystko, możesz zacząć!
Otwieranie i zapisywanie obrazów w OpenCV
Tutaj wyjaśniamy kilka podstawowych poleceń i terminologii, aby używać Pythona w OpenCV. Dowiemy się o trzech podstawowych funkcjach w OpenCV imread, imshow i imwrite.
#komentarze w Pythonie są oznaczone symbolem #
Importuj opencv w pythonie za pomocą polecenia
import cv2
Załaduj obraz, używając polecenia „imread”, określając ścieżkę do obrazu
image = cv2.imread ('input.jpg')
Teraz ten obraz jest ładowany i przechowywany w Pythonie jako zmienna, którą nazwaliśmy image
Teraz, aby wyświetlić naszą zmienną obrazu, używamy `` imshow '', a pierwszym parametrem funkcji imshow jest tytuł wyświetlany w oknie obrazu i należy go wprowadzić w (``), aby przedstawić nazwę jako ciąg
cv2.imshow ('witaj świecie', obraz)
waitkey pozwala nam na wprowadzenie informacji, gdy okno obrazu jest otwarte, pozostawiając je puste, po prostu czeka na naciśnięcie dowolnego klawisza przed kontynuowaniem, poprzez umieszczenie liczb (z wyjątkiem 0), możemy określić opóźnienie, przez które okno pozostaje otwarte (czas w milisekundach).
cv2.waitKey ()
'DestroyAllWindows' zamyka wszystkie otwarte okna, niepowodzenie w umieszczeniu spowoduje zawieszenie programu.
cv2.destroyAllWindows ()
, w tym celu użyjemy numpy, numpy to biblioteka do programowania w Pythonie, która dodaje obsługę dużych wielowymiarowych tablic i macierzy.
import cv2 #importing numpy import numpy as np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) #shape Funkcja jest bardzo przydatna, gdy patrzymy na wymiary tablicy, to zwraca krotkę, która podaje wymiar wydruku obrazu (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
wyjście konsoli - (183, 275, 3) Dwa wymiary obrazu to 183 piksele wysokości i 275 pikseli szerokości, a 3 oznacza, że istnieją trzy inne komponenty (R, G, B), które tworzą ten obraz (pokazuje że kolorowe obrazy są przechowywane w trójwymiarowych tablicach).
print ('Wysokość obrazu:', (image.shape, 'pixels')) print ('Width of image:', (image.shape, 'pixels'))
wyjście konsoli - Wysokość obrazu: (183, „piksele”)
Szerokość obrazu: (275, „piksele”)
Zapisywanie edytowanego obrazu w OpenCV
Używamy „imwrite” do określenia nazwy pliku i obrazu do zapisania.
cv2.imwrite ('wyjście.jpg', obraz) cv2.imwrite ('wyjście.png', obraz)
Pierwszy argument to nazwa pliku, który chcemy zapisać, {aby odczytać lub zapisać plik, którego używamy ('') do oznaczenia go jako ciąg znaków}, a drugi argument to nazwa pliku.
OpenCV umożliwia zapisywanie obrazu w różnych formatach.
Obraz ze skalowaniem szarości w OpenCV
Skala szarości to proces, w którym obraz jest konwertowany z pełnego koloru na odcienie szarości (czarno-biały)
W opencv wiele funkcji skaluje obrazy w odcieniach szarości przed przetworzeniem. Dzieje się tak, ponieważ upraszcza obraz, działając prawie jak redukcja szumów i wydłużając czas przetwarzania, ponieważ jest mniej informacji w obrazie (ponieważ obrazy w skali szarości są przechowywane w dwuwymiarowych tablicach).
import cv2 # załaduj nasz obraz wejściowy image = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # używamy cvtcolor, aby przekonwertować do skali szarości gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('skala szarości', gray_image) cv2.waitKey () cv2.destroyALLWindows ()
Prostszym sposobem konwersji obrazu na skalę szarości jest po prostu dodanie argumentu 0 w funkcji imread oprócz nazwy obrazu
import cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('grayscale', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
import cv2 import numpy as np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('skala szarości', gray_image) print (gray_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
Wyjście konsoli: - (183, 275, 3) - dla kolorowego obrazu
(183, 275) - dla obrazu w skali szarości
Stąd jasno pokazuje, że kolorowe obrazy są reprezentowane przez trójwymiarowe tablice, podczas gdy obrazy w skali szarości przez dwuwymiarowe tablice.
Przestrzenie kolorów
Przestrzenie kolorów to sposób przechowywania obrazów. RGB, HSV, CMYK to różne przestrzenie kolorów, to tylko proste sposoby przedstawiania koloru.
RGB - czerwony, zielony i niebieski.
HSV - odcień, nasycenie i wartość.
I CMYK jest powszechnie stosowany w drukarkach atramentowych.
Przestrzeń kolorów RGB lub BGR
Domyślną przestrzenią kolorów OpenCV jest RGB. RGB to addytywny model kolorów, który generuje kolory poprzez połączenie kolorów niebieskiego, zielonego i czerwonego o różnej intensywności / jasności. W OpenCV używamy 8-bitowej głębi kolorów.
- Czerwony (0-255)
- niebieski (0-255)
- zielony (0-255)
Jednak OpenCV faktycznie przechowuje kolor w formacie BGR.
Ciekawostka: - Używamy kolejności BGR w komputerach ze względu na sposób, w jaki 32-bitowe liczby całkowite bez znaku są przechowywane w pamięci, nadal są przechowywane jako RGB. Liczba całkowita reprezentująca kolor, np.: - 0X00BBGGRR zostanie zapisana jako 0XRRGGBB.
Przestrzeń kolorów HSVHSV (odcień, nasycenie i wartość / jasność) to przestrzeń kolorów, która próbuje przedstawić kolory postrzegane przez ludzi. Przechowuje informacje o kolorze w cylindrycznej reprezentacji punktów kolorów RGB.
Hue - wartość koloru (0-179)
Nasycenie - intensywność koloru (0-255)
Wartość - jasność lub intensywność (0-255)
Format przestrzeni kolorów HSV jest przydatny przy segmentacji kolorów. W RGB filtrowanie określonego koloru nie jest łatwe, jednak HSV znacznie ułatwia ustawienie zakresów kolorów w celu filtrowania określonych kolorów, tak jak je postrzegamy.
Odcień reprezentuje kolor w HSV, wartość barwy mieści się w zakresie od 0 do 180, a nie 360, więc nie wypełnia pełnego koła, więc jest odwzorowywany inaczej niż standard.
Filtry kolorów
- Czerwony - (165-15)
- Zielony - (45-75)
- Niebieski - (90-120)
Jak wiemy, obrazy są przechowywane w przestrzeni kolorów RGB (czerwony, zielony i niebieski), więc OpenCV pokazuje nam to samo, ale pierwszą rzeczą, o której należy pamiętać o formacie RGB opencv, jest to, że jest to w rzeczywistości BGR i możemy to poznać, patrząc na kształt obrazu.
import cv2 import numpy as np image = cv2.imread ('input.jpg') # B, G, R wartość dla pierwszego 0,0 piksela B, G, R = image print (B, G, R) print (image.shape) #now jeśli zastosujemy to na obrazie w skali szarości gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (gray_img.shape) #gray_image Wartość piksela dla druku 10,50 pikseli (gray_img)
Wyjście konsoli: print (B, G, R) - 6 11 10
print (image.shape) - (183, 275, 3)
print (gray_img.shape) - (183, 275)
nadruk (gray_img) - 69
Teraz na obrazie w skali szarości są tylko dwa wymiary, ponieważ pamiętamy, że kolorowy obraz jest przechowywany w trzech wymiarach, trzeci wymiar to (R, G, B), podczas gdy w skali szarości występują tylko dwa wymiary, ponieważ (R, G, B) jest nieobecne i dla określonej pozycji piksela otrzymujemy tylko jedną wartość, podczas gdy na kolorowym obrazie mamy trzy wartości.
Kolejną przydatną przestrzenią kolorów jest HSV
import cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (image, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2. imshow ('kanał nasycenia', hsv_image) cv2.imshow ('kanał wartości', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Po uruchomieniu kodu można zobaczyć cztery obrazy, z których trzy dotyczą poszczególnych kanałów, a jeden jest połączonym obrazem HSV.
Obraz kanału odcienia jest dość ciemny, ponieważ jego wartość zmienia się tylko od 0 do 180.
Zwróć również uwagę, że funkcja imshow próbuje pokazać obraz RGB lub BGR, ale konwersja HSV nakłada się na niego.
Ponadto kanał wartości będzie podobny do skali szarości obrazu ze względu na jego jasność.
Poznawanie poszczególnych składników obrazu RGB
import cv2 image = cv2.imread ('input.jpg') # Funkcja podziału opencv dzieli obrazinti każdy indeks koloru B, G, R = cv2.split (obraz) cv2.imshow ("Czerwony", R) cv2.imshow („zielona”, G) cv2.imshow („niebieski”, b) #making oryginalnego obrazu przez połączenie poszczególnych składników barwnych połączyły = cv2.merge () cv2.imshow („połączone” połączone) #amplifying niebieski kolor połączono = cv2.merge () cv2.imshow ("połączone z niebieskim wzmocnieniem", scalone) #reprezentacja kształtu poszczególnych składników koloru. # wynik byłby tylko dwuwymiarowy, a więc wysokością i szerokością, ponieważ trzeci element składowej RGB jest indywidualnie reprezentowany przez druk (kształt B.) druk (R.shape) print (G.shape) cv2.waitKey (0) cv2.destroyAllWindows ()
Wyjście konsoli: # wymiary obrazu z funkcji kształtu
(183, 275)
(183, 275)
(183, 275)
Konwersja obrazu do pojedynczego komponentu RGB
W poniższym kodzie stworzyliśmy macierz zer o wymiarach obrazu HxW, zero zwraca tablicę wypełnioną zerami, ale o tych samych wymiarach.
Funkcja kształtu jest bardzo przydatna, gdy patrzymy na wymiar obrazu, a tutaj wykonaliśmy cięcie tej funkcji kształtu. Więc kształt obejmowałby wszystko do wyznaczonych punktów, tj. Do drugich wyznaczonych punktów, które byłyby wysokością i szerokością obrazu, ponieważ trzeci reprezentuje komponent RGB obrazu i nie potrzebujemy go tutaj.
import cv2 import numpy as np image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) zeros = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("RED", cv2.merge ()) cv2.imshow ("Green", cv2.merge ()) cv2.imshow ("Blue", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Reprezentacja obrazu na histogramie
Reprezentacja histogramu obrazu to metoda wizualizacji składników obrazów.
Poniższy kod umożliwia analizę obrazu poprzez histogram kolorów jego połączonych i pojedynczych składników koloru.
import cv2 import numpy as np # musimy zaimportować matplotlib, aby utworzyć wykresy histogramów import matplotlib.pyplot as plt image = cv2.imread ('input.jpg') histogram = cv2.calcHist (,, None,,) #we plot a histogram, ravel () spłaszcza naszą tablicę obrazów plt.hist (image.ravel (), 256,) plt.show () #viewing oddzielne kanały kolorów color = ('b', 'g', 'r') #we know oddziel kolor i wykreśl każdy na histogramie dla i, col in enumerate (color): histogram2 = cv2.calcHist (,, None,,) plt.plot (histogram2, color = col) plt.xlim () plt.show ()
Rozumiemy funkcję calcHist z każdym jej indywidualnym parametrem
cv2.calcHist (obrazy, kanały, maska, histsize , zakresy)
Obrazy: jest to obraz źródłowy typu uint 8 lub float 32. Powinien być podany w nawiasach kwadratowych, tj. „”, Co również wskazuje na tablicę drugiego poziomu, ponieważ obraz dla opencv to dane w postaci tablicowej.
Kanały: podano również w nawiasach kwadratowych. Jest to indeks kanału, dla którego obliczamy histogram, na przykład jeśli wejście jest obrazem w skali szarości, jego wartość dla kolorowych obrazów, które można przekazać, lub do obliczenia histogramu odpowiednio kanału niebieskiego, zielonego i czerwonego.
Maska: obraz maski. aby znaleźć histogram pełnego obrazu, podaje się go jako „brak”. ale jeśli chcesz znaleźć histogram określonego obszaru obrazu, musisz utworzyć dla niego obraz maski i nadać go jako maskę.
Histsize: To reprezentuje naszą liczbę BIN. Musi być podane w nawiasach kwadratowych dla pełnej skali przechodzimy.
Zakresy: to jest nasz zakres, zwykle jest
Rysowanie obrazów i kształtów przy użyciu OpenCV
Poniżej znajduje się kilka przykładów rysowania linii, prostokąta, wielokąta, koła itp. W OpenCV.
import cv2 import numpy as np # tworzenie czarnego kwadratowego obrazu = np.zeros ((512,512,3), np.uint8) # możemy to również stworzyć w czerni i bieli, jednak nie byłoby żadnych zmian image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("czarny prostokąt (kolor)", obraz) cv2.imshow ("czarny prostokąt (czarno-biały)", image_bw)
Linia
# utwórz linię nad czarnym kwadratem # cv2.line (obraz, współrzędne początkowe, współrzędne końcowe, kolor, grubość) # rysowanie ukośnej linii o grubości 5 pikseli image = np.zeros ((512,512,3), np.uint8) cv2.line (obraz, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("niebieska linia", obraz)
Prostokąt
# utwórz prostokąt nad czarnym kwadratem # cv2.rectangle (obraz, współrzędne początkowe, współrzędne końcowe, kolor, grubość) # rysowanie prostokąta o grubości 5 pikseli image = np.zeros ((512,512,3), np.uint8) cv2.rectangle (obraz, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("prostokąt", obraz)
okrąg# tworzenie okręgu nad czarnym kwadratem # cv2.circle (obraz, środek, promień, kolor, wypełnienie) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255,127,0), - 1) cv2.imshow ("kółko", obraz)
Wielokąt# tworzenie obrazu wielokąta = np.zeros ((512,512,3), np.uint8) #lety definiują cztery punkty pts = np.array (,,,], np.int32) #lets teraz zmieniają kształt naszych punktów w formie wymaganej przez poliliniami pkt = pts.reshape ((- 1,1,2)) cv2.polylines (zdjęcie, True (0255255), 3) cv2.imshow ("wielobok" obraz)
Tekst# umieszczanie tekstu za pomocą opencv # cv2.putText (obraz, 'tekst do wyświetlenia', lewy punkt początkowy startu, czcionka, rozmiar czcionki, kolor, grubość) image = np.zeros ((512,512,3), np.uint8) cv2. putText (obraz, "witaj świecie", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("witaj świecie", obraz) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision i OpenCV to bardzo obszerne tematy do omówienia, ale ten przewodnik byłby dobrym punktem wyjścia do nauki OpenCV i przetwarzania obrazu.