AI z Pythonem - wizja komputerowa
Wizja komputerowa zajmuje się modelowaniem i odtwarzaniem ludzkiego wzroku przy użyciu oprogramowania i sprzętu komputerowego. W tym rozdziale dowiesz się o tym szczegółowo.
Wizja komputerowa
Wizja komputerowa to dyscyplina, która bada, jak rekonstruować, przerywać i rozumieć scenę 3D na podstawie jej obrazów 2D, pod względem właściwości struktury obecnej w scenie.
Hierarchia widzenia komputerowego
Wizja komputerowa dzieli się na trzy podstawowe kategorie w następujący sposób -
Low-level vision - Zawiera obraz procesu do wyodrębniania cech.
Intermediate-level vision - Obejmuje rozpoznawanie obiektów i interpretację scen 3D
High-level vision - Obejmuje koncepcyjny opis sceny, takiej jak aktywność, zamiar i zachowanie.
Przetwarzanie obrazu komputerowego a przetwarzanie obrazu
Przetwarzanie obrazu bada transformację obrazu na obraz. Dane wejściowe i wyjściowe przetwarzania obrazu to obrazy.
Wizja komputerowa to konstruowanie jednoznacznych, znaczących opisów obiektów fizycznych na podstawie ich obrazu. Wynikiem widzenia komputerowego jest opis lub interpretacja struktur w scenie 3D.
Aplikacje
Wizja komputerowa znajduje zastosowania w następujących dziedzinach -
Robotics
Lokalizacja - automatyczne określanie lokalizacji robota
Navigation
Unikanie przeszkód
Montaż (kołek w otworze, spawanie, malowanie)
Manipulacja (np. Manipulator robota PUMA)
Interakcja człowieka z robotem (HRI): inteligentna robotyka do interakcji z ludźmi i służenia im
Medicine
Klasyfikacja i wykrywanie (np. Klasyfikacja zmian lub komórek i wykrywanie guzów)
Segmentacja 2D / 3D
Rekonstrukcja 3D narządów ludzkich (MRI lub USG)
Chirurgia robotyczna sterowana wzrokiem
Security
- Biometria (tęczówka, odcisk palca, rozpoznawanie twarzy)
- Wykrywanie przez nadzór pewnych podejrzanych działań lub zachowań
Transportation
- Autonomiczny pojazd
- Bezpieczeństwo, np. Monitorowanie czujności kierowcy
Industrial Automation Application
- Inspekcja przemysłowa (wykrywanie wad)
- Assembly
- Odczyt kodów kreskowych i etykiet opakowań
- Sortowanie obiektów
- Zrozumienie dokumentów (np. OCR)
Instalowanie przydatnych pakietów
W przypadku wizji komputerowej w Pythonie możesz użyć popularnej biblioteki o nazwie OpenCV(Open Source Computer Vision). Jest to biblioteka funkcji programistycznych przeznaczonych głównie do wizji komputerowej w czasie rzeczywistym. Jest napisany w C ++, a jego główny interfejs to C ++. Możesz zainstalować ten pakiet za pomocą następującego polecenia -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
Tutaj X reprezentuje wersję Pythona zainstalowaną na twoim komputerze, a także wersję win32 lub 64-bitową, którą masz.
Jeśli używasz anaconda środowisko, a następnie użyj następującego polecenia, aby zainstalować OpenCV -
conda install -c conda-forge opencv
Czytanie, pisanie i wyświetlanie obrazu
Większość aplikacji CV musi pobierać obrazy jako dane wejściowe i generować obrazy jako dane wyjściowe. W tej sekcji dowiesz się, jak czytać i zapisywać plik obrazu za pomocą funkcji udostępnianych przez OpenCV.
Funkcje OpenCV do czytania, wyświetlania, pisania pliku obrazu
OpenCV udostępnia w tym celu następujące funkcje -
imread() function- To jest funkcja do czytania obrazu. OpenCV imread () obsługuje różne formaty obrazów, takie jak PNG, JPEG, JPG, TIFF itp.
imshow() function- To funkcja służąca do wyświetlania obrazu w oknie. Okno automatycznie dopasowuje się do rozmiaru obrazu. OpenCV imshow () obsługuje różne formaty obrazów, takie jak PNG, JPEG, JPG, TIFF itp.
imwrite() function- To jest funkcja zapisywania obrazu. OpenCV imwrite () obsługuje różne formaty obrazów, takie jak PNG, JPEG, JPG, TIFF itp.
Przykład
Ten przykład pokazuje kod Pythona do odczytu obrazu w jednym formacie - pokazując go w oknie i zapisując ten sam obraz w innym formacie. Rozważ kroki pokazane poniżej -
Zaimportuj pakiet OpenCV, jak pokazano -
import cv2
Teraz do odczytania konkretnego obrazu użyj funkcji imread () -
image = cv2.imread('image_flower.jpg')
Aby wyświetlić obraz, użyj imshow()funkcjonować. Nazwa okna, w którym można zobaczyć obraz, toimage_flower.
cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
Teraz możemy zapisać ten sam obraz w innym formacie, powiedzmy .png, używając funkcji imwrite () -
cv2.imwrite('image_flower.png',image)
Wynik Prawda oznacza, że obraz został pomyślnie zapisany jako plik .png również w tym samym folderze.
True
Uwaga - Funkcja destruallWindows () po prostu niszczy wszystkie stworzone przez nas okna.
Konwersja przestrzeni kolorów
W OpenCV obrazy nie są zapisywane przy użyciu konwencjonalnego koloru RGB, a raczej są przechowywane w odwrotnej kolejności, tj. W kolejności BGR. Stąd domyślnym kodem koloru podczas czytania obrazu jest BGR. PlikcvtColor() funkcja konwersji kolorów służy do konwersji obrazu z jednego kodu koloru na inny.
Przykład
Rozważ ten przykład, aby przekonwertować obraz z BGR na skalę szarości.
Zaimportuj OpenCV pakiet, jak pokazano -
import cv2
Teraz do odczytania konkretnego obrazu użyj funkcji imread () -
image = cv2.imread('image_flower.jpg')
Teraz, jeśli widzimy ten obraz przy użyciu imshow() funkcji, wtedy widzimy, że ten obraz jest w BGR.
cv2.imshow('BGR_Penguins',image)
Teraz użyj cvtColor() funkcję konwersji tego obrazu do skali szarości.
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
Wykrywanie krawędzi
Po obejrzeniu szkicu ludzie z łatwością rozpoznają wiele typów obiektów i ich pozy. Dlatego krawędzie odgrywają ważną rolę w życiu człowieka, a także w zastosowaniach wizji komputerowej. OpenCV udostępnia bardzo prostą i przydatną funkcję o nazwieCanny()do wykrywania krawędzi.
Przykład
Poniższy przykład pokazuje wyraźną identyfikację krawędzi.
Importuj pakiet OpenCV, jak pokazano -
import cv2
import numpy as np
Teraz, aby odczytać konkretny obraz, użyj imread() funkcjonować.
image = cv2.imread('Penguins.jpg')
Teraz użyj Canny () funkcja wykrywania krawędzi już odczytanego obrazu.
cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))
Teraz, aby pokazać obraz z krawędziami, użyj funkcji imshow ().
cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))
Ten program w Pythonie utworzy obraz o nazwie edges_penguins.jpg z wykrywaniem krawędzi.
Wykrywanie twarzy
Wykrywanie twarzy jest jedną z fascynujących aplikacji widzenia komputerowego, co czyni ją bardziej realistyczną i futurystyczną. OpenCV ma wbudowaną funkcję wykrywania twarzy. Będziemy używaćHaar klasyfikator kaskadowy do wykrywania twarzy.
Haar Cascade Data
Potrzebujemy danych, aby używać klasyfikatora kaskadowego Haara. Możesz znaleźć te dane w naszym pakiecie OpenCV. Po zainstalowaniu OpenCv możesz zobaczyć nazwę folderuhaarcascades. Byłyby pliki .xml dla różnych aplikacji. Teraz skopiuj je wszystkie do innego użytku i wklej je do nowego folderu w bieżącym projekcie.
Example
Poniżej znajduje się kod Pythona używający Haar Cascade do wykrywania twarzy Amitabha Bachana pokazanej na poniższym obrazku -
Zaimportuj OpenCV pakiet, jak pokazano -
import cv2
import numpy as np
Teraz użyj HaarCascadeClassifier do wykrywania twarzy -
face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')
Teraz, aby odczytać konkretny obraz, użyj imread() funkcja -
img = cv2.imread('AB.jpg')
Teraz przekonwertuj go na skalę szarości, ponieważ akceptowałby szare obrazy -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Teraz używając face_detection.detectMultiScale, wykonaj faktyczne wykrywanie twarzy
faces = face_detection.detectMultiScale(gray, 1.3, 5)
Teraz narysuj prostokąt wokół całej twarzy -
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)
Ten program w Pythonie utworzy obraz o nazwie Face_AB.jpg z funkcją wykrywania twarzy, jak pokazano
Wykrywanie oczu
Wykrywanie oczu to kolejne fascynujące zastosowanie widzenia komputerowego, które czyni je bardziej realistycznymi i futurystycznymi. OpenCV ma wbudowaną funkcję wykrywania oczu. Będziemy używaćHaar cascade klasyfikator do wykrywania oczu.
Przykład
Poniższy przykład przedstawia kod Pythona za pomocą Haar Cascade do wykrywania twarzy Amitabha Bachana podanej na poniższym obrazku -
Importuj pakiet OpenCV, jak pokazano -
import cv2
import numpy as np
Teraz użyj HaarCascadeClassifier do wykrywania twarzy -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
Teraz, aby odczytać konkretny obraz, użyj imread() funkcjonować
img = cv2.imread('AB_Eye.jpg')
Teraz przekonwertuj go na skalę szarości, ponieważ akceptowałby szare obrazy -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Teraz z pomocą eye_cascade.detectMultiScale, wykonaj faktyczne wykrywanie twarzy
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
Teraz narysuj prostokąt wokół całej twarzy -
for (ex,ey,ew,eh) in eyes:
img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)
Ten program w Pythonie utworzy obraz o nazwie Eye_AB.jpg z wykrywaniem oczu, jak pokazano -