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 -