KI mit Python - Computer Vision
Computer Vision befasst sich mit der Modellierung und Replikation des menschlichen Sehens mithilfe von Computersoftware und -hardware. In diesem Kapitel erfahren Sie mehr darüber.
Computer Vision
Computer Vision ist eine Disziplin, die untersucht, wie eine 3D-Szene aus ihren 2D-Bildern im Hinblick auf die Eigenschaften der in der Szene vorhandenen Struktur rekonstruiert, unterbrochen und verstanden werden kann.
Computer Vision Hierarchie
Computer Vision ist wie folgt in drei grundlegende Kategorien unterteilt:
Low-level vision - Es enthält ein Prozessabbild zur Merkmalsextraktion.
Intermediate-level vision - Es beinhaltet Objekterkennung und 3D-Szeneninterpretation
High-level vision - Es enthält eine konzeptionelle Beschreibung einer Szene wie Aktivität, Absicht und Verhalten.
Computer Vision gegen Bildverarbeitung
Die Bildverarbeitung untersucht die Bild-zu-Bild-Transformation. Die Eingabe und Ausgabe der Bildverarbeitung sind beide Bilder.
Computer Vision ist die Konstruktion expliziter, aussagekräftiger Beschreibungen physischer Objekte aus ihrem Bild. Die Ausgabe von Computer Vision ist eine Beschreibung oder Interpretation von Strukturen in einer 3D-Szene.
Anwendungen
Computer Vision findet Anwendung in den folgenden Bereichen:
Robotics
Lokalisierung - Roboterstandort automatisch bestimmen
Navigation
Vermeidung von Hindernissen
Montage (Loch, Schweißen, Lackieren)
Manipulation (zB PUMA Robotermanipulator)
Human Robot Interaction (HRI): Intelligente Robotik zur Interaktion mit und zum Dienst an Menschen
Medicine
Klassifizierung und Erkennung (z. B. Klassifizierung von Läsionen oder Zellen und Erkennung von Tumoren)
2D / 3D-Segmentierung
3D-Rekonstruktion menschlicher Organe (MRT oder Ultraschall)
Vision-gesteuerte Robotik-Chirurgie
Security
- Biometrie (Iris, Fingerabdruck, Gesichtserkennung)
- Überwachung, die bestimmte verdächtige Aktivitäten oder Verhaltensweisen erkennt
Transportation
- Autonomes Fahrzeug
- Sicherheit, z. B. Überwachung der Wachsamkeit des Fahrers
Industrial Automation Application
- Industrielle Inspektion (Fehlererkennung)
- Assembly
- Lesen von Barcode und Verpackungsetiketten
- Objektsortierung
- Dokumentenverständnis (zB OCR)
Nützliche Pakete installieren
Für Computer Vision mit Python können Sie eine beliebte Bibliothek namens verwenden OpenCV(Open Source Computer Vision). Es ist eine Bibliothek von Programmierfunktionen, die hauptsächlich auf die Echtzeit-Computer-Vision abzielen. Es ist in C ++ geschrieben und seine primäre Schnittstelle ist in C ++. Sie können dieses Paket mit Hilfe des folgenden Befehls installieren:
pip install opencv_python-X.X-cp36-cp36m-winX.whl
Hier steht X für die auf Ihrem Computer installierte Python-Version sowie für die Win32- oder 64-Bit-Version, die Sie haben.
Wenn Sie die verwenden anaconda Verwenden Sie dann den folgenden Befehl, um OpenCV zu installieren -
conda install -c conda-forge opencv
Lesen, Schreiben und Anzeigen eines Bildes
Die meisten CV-Anwendungen müssen die Bilder als Eingabe erhalten und die Bilder als Ausgabe erzeugen. In diesem Abschnitt erfahren Sie, wie Sie mithilfe von OpenCV-Funktionen Bilddateien lesen und schreiben.
OpenCV-Funktionen zum Lesen, Anzeigen und Schreiben einer Bilddatei
OpenCV bietet zu diesem Zweck folgende Funktionen:
imread() function- Dies ist die Funktion zum Lesen eines Bildes. OpenCV imread () unterstützt verschiedene Bildformate wie PNG, JPEG, JPG, TIFF usw.
imshow() function- Dies ist die Funktion zum Anzeigen eines Bildes in einem Fenster. Das Fenster passt sich automatisch der Bildgröße an. OpenCV imshow () unterstützt verschiedene Bildformate wie PNG, JPEG, JPG, TIFF usw.
imwrite() function- Dies ist die Funktion zum Schreiben eines Bildes. OpenCV imwrite () unterstützt verschiedene Bildformate wie PNG, JPEG, JPG, TIFF usw.
Beispiel
Dieses Beispiel zeigt den Python-Code zum Lesen eines Bildes in einem Format - zeigt es in einem Fenster an und schreibt dasselbe Bild in einem anderen Format. Betrachten Sie die unten gezeigten Schritte -
Importieren Sie das OpenCV-Paket wie gezeigt -
import cv2
Verwenden Sie jetzt zum Lesen eines bestimmten Bildes die Funktion imread () -
image = cv2.imread('image_flower.jpg')
Verwenden Sie zum Anzeigen des Bildes die imshow()Funktion. Der Name des Fensters, in dem Sie das Bild sehen können, wäreimage_flower.
cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
Jetzt können wir dasselbe Bild mit der Funktion imwrite () in das andere Format schreiben, z. B. .png -
cv2.imwrite('image_flower.png',image)
Die Ausgabe True bedeutet, dass das Bild erfolgreich als PNG-Datei auch im selben Ordner geschrieben wurde.
True
Hinweis - Die Funktion destroyallWindows () zerstört einfach alle von uns erstellten Fenster.
Farbraumkonvertierung
In OpenCV werden die Bilder nicht unter Verwendung der herkömmlichen RGB-Farbe gespeichert, sondern in umgekehrter Reihenfolge, dh in der BGR-Reihenfolge. Daher ist der Standardfarbcode beim Lesen eines Bildes BGR. DascvtColor() Farbkonvertierungsfunktion zum Konvertieren des Bildes von einem Farbcode in einen anderen.
Beispiel
Betrachten Sie dieses Beispiel, um Bilder von BGR in Graustufen zu konvertieren.
Importieren Sie die OpenCV Paket wie gezeigt -
import cv2
Verwenden Sie jetzt zum Lesen eines bestimmten Bildes die Funktion imread () -
image = cv2.imread('image_flower.jpg')
Nun, wenn wir dieses Bild mit sehen imshow() Funktion, dann können wir sehen, dass dieses Bild in BGR ist.
cv2.imshow('BGR_Penguins',image)
Jetzt benutzen cvtColor() Funktion zum Konvertieren dieses Bildes in Graustufen.
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
Kantenerkennung
Menschen können, nachdem sie eine grobe Skizze gesehen haben, viele Objekttypen und ihre Posen leicht erkennen. Deshalb spielen Kanten eine wichtige Rolle im Leben des Menschen sowie bei der Anwendung von Computer Vision. OpenCV bietet eine sehr einfache und nützliche Funktion namensCanny()zum Erkennen der Kanten.
Beispiel
Das folgende Beispiel zeigt eine eindeutige Identifizierung der Kanten.
OpenCV-Paket wie gezeigt importieren -
import cv2
import numpy as np
Verwenden Sie jetzt zum Lesen eines bestimmten Bildes die Taste imread() Funktion.
image = cv2.imread('Penguins.jpg')
Verwenden Sie jetzt die Canny () Funktion zum Erkennen der Kanten des bereits gelesenen Bildes.
cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))
Verwenden Sie jetzt die Funktion imshow (), um das Bild mit Kanten anzuzeigen.
cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))
Dieses Python-Programm erstellt ein Bild mit dem Namen edges_penguins.jpg mit Kantenerkennung.
Gesichtserkennung
Die Gesichtserkennung ist eine der faszinierenden Anwendungen des Computer-Sehens, die es sowohl realistischer als auch futuristischer macht. OpenCV verfügt über eine integrierte Funktion zur Gesichtserkennung. Wir werden das benutzenHaar Kaskadenklassifikator zur Gesichtserkennung.
Haar-Kaskadendaten
Wir benötigen Daten, um den Haar-Kaskadenklassifikator zu verwenden. Sie finden diese Daten in unserem OpenCV-Paket. Nach der Installation von OpenCv sehen Sie den Ordnernamenhaarcascades. Es würde XML-Dateien für verschiedene Anwendungen geben. Kopieren Sie nun alle für eine andere Verwendung und fügen Sie sie in einen neuen Ordner unter dem aktuellen Projekt ein.
Example
Das Folgende ist der Python-Code, der Haar Cascade verwendet, um das im folgenden Bild gezeigte Gesicht von Amitabh Bachan zu erkennen:
Importieren Sie die OpenCV Paket wie gezeigt -
import cv2
import numpy as np
Verwenden Sie jetzt die HaarCascadeClassifier zur Gesichtserkennung -
face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')
Verwenden Sie jetzt zum Lesen eines bestimmten Bildes die Taste imread() Funktion -
img = cv2.imread('AB.jpg')
Konvertieren Sie es jetzt in Graustufen, da es graue Bilder akzeptieren würde -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Jetzt mit face_detection.detectMultiScaleFühren Sie eine tatsächliche Gesichtserkennung durch
faces = face_detection.detectMultiScale(gray, 1.3, 5)
Zeichnen Sie nun ein Rechteck um das gesamte Gesicht -
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)
Dieses Python-Programm erstellt ein Bild mit dem Namen Face_AB.jpg mit Gesichtserkennung wie gezeigt
Augenerkennung
Die Augenerkennung ist eine weitere faszinierende Anwendung des Computer-Sehens, die es sowohl realistischer als auch futuristischer macht. OpenCV verfügt über eine integrierte Funktion zur Augenerkennung. Wir werden das benutzenHaar cascade Klassifikator zur Augenerkennung.
Beispiel
Das folgende Beispiel zeigt den Python-Code mit Haar Cascade, um das im folgenden Bild gezeigte Gesicht von Amitabh Bachan zu erkennen:
OpenCV-Paket wie gezeigt importieren -
import cv2
import numpy as np
Verwenden Sie jetzt die HaarCascadeClassifier zur Gesichtserkennung -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
Verwenden Sie jetzt zum Lesen eines bestimmten Bildes die Taste imread() Funktion
img = cv2.imread('AB_Eye.jpg')
Konvertieren Sie es jetzt in Graustufen, da es graue Bilder akzeptieren würde -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Jetzt mit Hilfe von eye_cascade.detectMultiScaleFühren Sie eine tatsächliche Gesichtserkennung durch
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
Zeichnen Sie nun ein Rechteck um das gesamte Gesicht -
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)
Dieses Python-Programm erstellt ein Bild mit dem Namen Eye_AB.jpg mit Augenerkennung wie gezeigt -