- Was sind Bilder?
- Wie der Computer Bilder speichert
- Warum es für eine Maschine schwierig ist, Bilder zu identifizieren
- Anwendung und Verwendung von OpenCV
- OpenCV mit Python und Anaconda installieren
- Öffnen und Speichern von Bildern in OpenCV
- Grau skalierendes Bild in OpenCV
- Farbräume
- Erkundung einzelner Komponenten des RGB-Bildes
- Bild in einzelne RGB-Komponente konvertieren
- Histogrammdarstellung des Bildes
- Zeichnen von Bildern und Formen mit OpenCV
Kunst ist eine Art zu sehen, und sie sagen, Sehen ist Glauben, aber das Gegenteil ist auch wahr, Glauben ist Sehen und es ist wirklich schwer vorstellbar, in dieser Welt ohne die Gabe des Sehens zu leben - unsere Augen, wie wunderbar es ist, ein Kind zu sein Wenn sich unsere Augen gerade öffnen, sehen wir die Welt und beginnen, die Welt um uns herum zu erkennen und zu sehen, aber im Laufe der Zeit wird dieselbe wundervolle Erfahrung zu einer weltlichen. Aber während wir mit der Technologie fortfahren, stehen wir kurz davor, dass die Maschinen sie auch sehen und verstehen können. Derzeit scheint es kein Science-Fiction zu sein, wenn Sie Ihr Telefon nur mit dem Gesicht entsperren, aber die Geschichte der Entwicklung der Bildverarbeitung reicht weit über 20 Jahre zurück.
Der erste formale Schritt in diesem Bereich wurde 1999 im Rahmen einer Intel-Initiative unternommen, als alle laufenden Forschungsarbeiten im Rahmen des OPEN CV (Open Source Computer Vision), der ursprünglich in C ++ geschrieben wurde, mit der ersten Hauptversion 1.0 im Jahr 2006 zusammenarbeiteten 2009, dritter im Jahr 2015 und vierter im Jahr 2018. Jetzt verfügt OpenCV über C ++ -, Python- und Java-Schnittstellen und unterstützt Windows, Linux, Mac OS, iOS und Android. So kann es einfach in Raspberry Pi mit Python- und Linux-Umgebung installiert werden. Mit Raspberry Pi mit OpenCV und angeschlossener Kamera können viele Echtzeit-Bildverarbeitungsanwendungen wie Gesichtserkennung, Gesichtsverriegelung, Objektverfolgung, Erkennung von Autokennzeichen, Haussicherungssystem usw. erstellt werden.
Bevor Sie sich mit der Bildverarbeitung mit openCV befassen, müssen Sie wissen, was Bilder sind und wie Menschen und Maschinen diese Bilder wahrnehmen.
Was sind Bilder?
Bilder sind eine zweidimensionale Darstellung des sichtbaren Lichtspektrums. Und das sichtbare Lichtspektrum ist nur ein Teil des dort zwischen Infrarot- und Ultraviolett-Spektrum liegenden elektromagnetischen Spektrums.
Wie entstehen Bilder: - Wenn ein Licht von einem Objekt auf einen Film, einen Sensor oder auf die Netzhaut reflektiert wird.
So arbeiten unsere Augen, indem sie eine Barriere verwenden, um den größten Punkt des Lichts zu blockieren, wobei eine kleine Öffnung verbleibt, durch die Licht hindurchtreten kann. Dies wird als Blende bezeichnet. Sie erzeugt ein stark fokussiertes Bild und ist ein Arbeitsmodell für eine Lochkamera. Bei einer Lochkamera tritt jedoch das Problem auf, dass dieselbe Lichtmenge in die Blende gelangt, die für den erzeugten Film oder das erzeugte Bild nicht geeignet sein könnte. Außerdem können wir kein fokussiertes Bild erhalten, um das von uns fokussierte Bild zu fokussieren Film muss hin und her bewegt werden, aber dies ist in vielen Situationen problematisch.
Oder wir können dieses Problem mithilfe von Objektiven beheben. Dadurch können wir die Blendengröße steuern. In der Fotografie ist es als f Stop bekannt. Im Allgemeinen ist ein niedrigerer Wert von f Stop in der Fotografie besser.
Die Blendengröße ermöglicht es uns auch, in eine schöne Schärfentiefe zu gelangen, die in der Fotografie als Bokeh bezeichnet wird. Dadurch können wir einen unscharfen Hintergrund haben, während wir uns auf das Bild konzentrieren.
Wie der Computer Bilder speichert
Möglicherweise haben Sie von verschiedenen Bildformaten wie.png,.jpgG usw. gehört. All dies ist eine digitale Darstellung unserer analogen Welt. Computer tun dies, indem sie das Bild zur Speicherung in digitalen Code übersetzen und die Datei dann wieder in ein Bild für interpretieren Anzeige. Im Grunde genommen verwenden sie jedoch eine gemeinsame Plattform zum Speichern der Bilder, und dies gilt auch für openCV.
OpenCV verwendet standardmäßig den RGB-Farbraum (rot, grün und blau) für seine Bilder, wobei jede Pixelkoordinate (x, y) 3 Werte enthält, die für Intensitäten in 8-Bit-Form reichen, dh (0-255, 2 8).
Das Mischen unterschiedlicher Intensitäten jeder Farbe gibt uns das gesamte Spektrum. Deshalb werden diese drei Farben in der Malerei oder Kunst als Primärfarben und alle anderen als Sekundärfarben angesehen, da die meisten Sekundärfarben durch Primärfarben gebildet werden können. Wie für Gelb haben wir folgende Werte: Rot - 255; Grün - 255; Blau - 0.
Jetzt werden die Bilder in mehrdimensionalen Arrays gespeichert. In der Programmierung ist Array eine Reihe von Sammlungen von Objekten. Und hier beschäftigen wir uns mit drei Arten von Arrays 1D, 2D und 3D, wobei 'D' für dimensional steht.
Farbige Bilder werden in dreidimensionalen Arrays gespeichert, wobei die dritte Dimension die RGB-Farben darstellt (die wir später sehen werden), und zusammen bilden sie unterschiedliche Intensitäten von Pixeln für ein Bild, während die Schwarzweißbilder in zweidimensionalen Arrays gespeichert werden Außerdem gibt es zwei Arten von Schwarzweißbildern: Graustufen- und Binärbilder.
Graustufenbilder entstehen aus den Graustufen eines zweidimensionalen Arrays, während die Binärbilder aus Pixeln von Schwarz oder Weiß bestehen.
Warum es für eine Maschine schwierig ist, Bilder zu identifizieren
Computer Vision ist an sich schon eine herausfordernde Aufgabe. Sie können sich vorstellen, wie schwierig es ist, einer Maschine ein Gefühl für Vision, Erkennung und Identifikation zu vermitteln. Die folgenden Faktoren machen das Computer-Sehen so schwierig.
- Einschränkungen für Kamerasensor und Objektiv
- Blickwinkelvariationen
- Beleuchtung wechseln
- Skalierung
- Okklusionen
- Objektklassenvariationen
- Mehrdeutige Bilder / optische Täuschungen
Anwendung und Verwendung von OpenCV
Trotz der Schwierigkeiten hat Computer Vision viele Erfolgsgeschichten
- Robotic Navigation - Selbstfahrende Autos
- Gesichtserkennung und -erkennung
- Suchmaschinen-Bildsuche
- Kennzeichen lesen
- Handschrifterkennung
- Snapchat & Gesichtsfilter
- Objekterkennung
- Ball & Player Tracking im Sport
- Und viele mehr!
OpenCV mit Python und Anaconda installieren
OpenCV ist in C ++ geschrieben, aber es ist sehr schwierig, es mit C ++ zu implementieren. Daher entscheiden wir uns, es mit einer Hochsprache als Python zu implementieren. Außerdem bietet die Implementierung von OpenCV mit Python zusätzliche Vorteile, da Python eine der einfachsten Sprachen ist auch für Anfänger Es ist extrem leistungsfähig für Data Science- und maschinelle Lernanwendungen und speichert Bilder in numpy Arrays, wodurch wir einige sehr leistungsfähige Operationen ganz einfach ausführen können.
Grundlegende Programmierung ist nützlich bei Exposure to High School Level Math, einer Webcam, Python 2.7 oder 3.6 (Anaconda-Paket wird bevorzugt).
Schritt 1. Laden Sie das Anaconda Python-Paket herunter und installieren Sie es
Gehen Sie zu: https://www.anaconda.com/download und wählen Sie je nach Computerwetter Windows, Linux oder Mac aus. Sie können zwischen Python 2.7 und Python 3.7 für 64-Bit-Systeme oder 32-Bit-Systeme wählen An manchen Tagen sind die meisten Systeme 64-Bit.
Die Anaconda-Distribution von Python wird zusammen mit Spyder Studio, Jupyter-Notebooks und Anaconda-Eingabeaufforderung geliefert, wodurch Python sehr benutzerfreundlich ist. Wir würden Spyder Studio für die Beispiele verwenden.
Die Wahl zwischen Python 2.7 oder 3.7 ist völlig neutral, aber für die Beispiele würden wir Python 3.7 verwenden, da es die Zukunft des Pythons ist und Python 2.7 ab 2020 übernehmen wird. Auch die meisten Bibliotheken werden in Python 3.7 entwickelt der zukünftige Aspekt von Python im Auge. Außerdem werden die erwarteten Ergebnisse für grundlegende mathematische Operationen wie (2/5 = 2,5) angezeigt, während Python 2.7 diese mit 2 auswerten würde. Auch print wird in Python 3.7 als Funktion behandelt (print („Hallo“)). So erhalten die Programmierer praktische Informationen.
Schritt 2. Erstellen einer virtuellen Plattform mit OpenCV
Wir werden OpenCV installieren, indem wir mithilfe der Anaconda-Eingabeaufforderung und der hier hochgeladenen YML-Datei eine virtuelle Plattform für Spyder erstellen.
Mit den YML-Dateien installieren wir alle Pakete und Bibliotheken, die benötigt werden. Wenn Sie jedoch zusätzliche Pakete installieren möchten, können Sie diese einfach über die anaconda-Eingabeaufforderung installieren, indem Sie den Befehl dieses Pakets ausführen.
Gehen Sie zu Ihrem Windows-Suchsymbol und suchen Sie das Anaconda-Eingabeaufforderungsterminal. Sie finden es in Ihrem Anaconda-Ordner, den Sie gerade installiert haben.
Dann müssen Sie Ihre heruntergeladene YML-Datei finden und von hier aus haben Sie zwei Möglichkeiten, entweder das Verzeichnis Ihres Terminals an den Speicherort zu ändern, an dem Ihre YML-Datei heruntergeladen wird, oder Ihre YML-Datei in das Verzeichnis zu kopieren, in dem Ihre Anaconda am meisten installiert ist In Fällen, in denen es sich in Laufwerk C: \ befindet, führen Sie nach dem Kopieren Ihrer YML-Datei an den angegebenen Speicherort den folgenden Befehl an Ihrer Eingabeaufforderung aus
conda env create –f virtual_platform_windows.yml
Da mein System unter Windows ausgeführt wird, entsprechen die YML-Datei und der Befehl den Fenstern. Sie können sie jedoch je nach System ändern, indem Sie Windows durch Linux oder Mac ersetzen.
Hinweis: - Wenn bei der Paketextraktion ein Fehler auftritt, installieren Sie zuerst pytorch und numpy und führen Sie dann den obigen Befehl aus.
Suchen Sie nun den Anaconda-Navigator und es wird ein Dropdown-Menü mit „Anwendungen auf ___“ angezeigt. Wählen Sie dort die virtuelle Umgebung aus, und von dort aus müssen Sie Spyder Studio starten.
Und das war's, Sie können loslegen!
Öffnen und Speichern von Bildern in OpenCV
Hier erklären wir einige grundlegende Befehle und Begriffe zur Verwendung von Python in OpenCV. Wir werden drei Grundfunktionen in OpenCV imread, imshow und imwrite kennenlernen.
# Kommentare in Python werden durch das Symbol # angegeben
Importieren Sie opencv per Befehl in Python
cv2 importieren
Laden Sie ein Bild mit 'imread' und geben Sie den Pfad zum Bild an
image = cv2.imread ('input.jpg')
Jetzt wird das Bild geladen und in Python als Variable gespeichert, die wir als Bild bezeichnet haben
Um nun unsere Bildvariable anzuzeigen, verwenden wir 'imshow' und der erste Parameter für die imshow-Funktion ist der im Bildfenster angezeigte Titel. Er muss in ('') eingegeben werden, um den Namen als Zeichenfolge darzustellen
cv2.imshow ('Hallo Welt', Bild)
Mit waitkey können wir Informationen eingeben, wenn das Bildfenster geöffnet ist. Wenn Sie es leer lassen, warten Sie nur darauf, dass eine Taste gedrückt wird, bevor Sie fortfahren. Durch Platzieren von Zahlen (außer 0) können Sie eine Verzögerung angeben, wie lange Sie das Fenster geöffnet halten (Zeit) in Millisekunden hier).
cv2.waitKey ()
'destroyAllWindows' schließt alle geöffneten Fenster. Wenn Sie dies nicht platzieren, bleibt Ihr Programm hängen.
cv2.destroyAllWindows ()
Dafür verwenden wir numpy. numpy ist eine Bibliothek für die Python-Programmierung, mit der große mehrdimensionale Arrays und Matrizen unterstützt werden.
import cv2 #importing numpy importiere numpy als np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) Die # shape- Funktion ist sehr nützlich, wenn wir uns die Dimensionen eines Arrays ansehen Gibt ein Tupel zurück, das eine Dimension eines Bilddrucks (image.shape) angibt. cv2.waitKey () cv2.destroyAllWindows ()
Konsolenausgabe - (183, 275, 3), Die beiden Dimensionen des Bildes sind 183 Pixel hoch und 275 Pixel breit, und 3 bedeutet, dass drei weitere Komponenten (R, G, B) dieses Bild erstellen (es wird angezeigt) dass die farbigen Bilder in dreidimensionalen Arrays gespeichert sind).
print ('Bildhöhe:', (Bildform, 'Pixel')) print ('Bildbreite:', (Bildform, 'Pixel'))
Konsolenausgabe - Höhe des Bildes: (183, 'Pixel')
Bildbreite: (275, 'Pixel')
Speichern des bearbeiteten Bildes in OpenCV
Wir verwenden 'imwrite', um den Dateinamen und das zu speichernde Bild anzugeben.
cv2.imwrite ('output.jpg', Bild) cv2.imwrite ('output.png', Bild)
Das erste Argument ist der Name der Datei, die wir speichern möchten, {um die Datei zu lesen oder zu speichern, die wir verwenden (''), um sie als Zeichenfolge anzugeben}, und das zweite Argument ist der Dateiname.
Mit OpenCV können Sie das Bild in verschiedenen Formaten speichern.
Grau skalierendes Bild in OpenCV
Graustufen ist der Prozess, bei dem ein Bild von einer Vollfarbe in Graustufen (Schwarzweiß) umgewandelt wird.
In opencv skalieren viele Funktionen die Bilder vor der Verarbeitung in Graustufen. Dies geschieht, weil es das Bild vereinfacht, fast als Rauschunterdrückung wirkt und die Verarbeitungszeit verlängert, da das Bild weniger Informationen enthält (da Graustufenbilder in zweidimensionalen Arrays gespeichert werden).
cv2 importieren # unser Eingabebild laden image = cv2.imread ('input.jpg') cv2.imshow ('original', Bild) cv2.waitKey () # wir verwenden cvtcolor, um in Graustufen grey_image = cv2.cvtColor (Bild ) zu konvertieren , cv2.COLOR_BGR2GRAY) cv2.imshow ('Graustufen', graues_Bild) cv2.waitKey () cv2.destroyALLWindows ()
Eine einfachere Möglichkeit , ein Bild in Graustufen umzuwandeln, besteht darin, das Argument 0 in der Imread- Funktion neben dem Bildnamen hinzuzufügen
import cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('graustufen', 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 () grey_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY)) cv2.imshow ('Graustufen', graues_Bild) print (grey_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
Konsolenausgabe: - (183, 275, 3) - für farbiges Bild
(183, 275) - für Graustufenbilder
Somit zeigt es deutlich, dass die farbigen Bilder durch dreidimensionale Arrays dargestellt werden, während die Graustufenbilder durch zweidimensionale Arrays dargestellt werden.
Farbräume
Farbräume sind die Art und Weise, wie die Bilder gespeichert werden. RGB, HSV, CMYK sind die verschiedenen Farbräume. Dies sind nur einfache Möglichkeiten, Farbe darzustellen.
RGB - Rot, Grün und Blau.
HSV - Farbton, Sättigung und Wert.
Und CMYK wird üblicherweise in Tintenstrahldruckern verwendet.
RGB- oder BGR-Farbraum
Der Standardfarbraum von OpenCV ist RGB. RGB ist ein additives Farbmodell, das Farben erzeugt, indem es blaue, grüne und rote Farben unterschiedlicher Intensität / Helligkeit kombiniert. In OpenCV verwenden wir 8-Bit-Farbtiefen.
- Rot (0-255)
- Blau (0-255)
- Grün (0-255)
OpenCV speichert jedoch tatsächlich Farben im BGR-Format.
Wissenswertes: - Wir verwenden die BGR-Reihenfolge in Computern, da vorzeichenlose 32-Bit-Ganzzahlen im Speicher gespeichert sind und diese dennoch als RGB gespeichert werden. Die Ganzzahl, die eine Farbe darstellt, z. B.: - 0X00BBGGRR, wird als 0XRRGGBB gespeichert.
HSV-FarbraumHSV (Farbton, Sättigung & Wert / Helligkeit) ist ein Farbraum, der versucht, Farben darzustellen, die der Mensch wahrnimmt. Es speichert Farbinformationen in einer zylindrischen Darstellung von RGB-Farbpunkten.
Farbton - Farbwert (0-179)
Sättigung - Lebendigkeit der Farbe (0-255)
Wert - Helligkeit oder Intensität (0-255)
Das HSV-Farbraumformat ist bei der Farbsegmentierung nützlich. In RGB ist das Filtern bestimmter Farben nicht einfach. HSV erleichtert jedoch das Festlegen von Farbbereichen, um bestimmte Farben so zu filtern, wie wir sie wahrnehmen.
Der Farbton stellt die Farbe im HSV dar. Der Farbtonwert reicht von 0 bis 180 und nicht von 360, sodass der Kreis nicht vollständig ist und daher anders als der Standard abgebildet wird.
Farbbereichsfilter
- Rot - (165-15)
- Grün - (45-75)
- Blau - (90-120)
Wie wir wissen, werden die Bilder im RGB-Farbraum (Rot, Grün und Blau) gespeichert, und so zeigt uns OpenCV dasselbe, aber das erste, woran wir uns beim RGB-Format von opencv erinnern sollten, ist, dass es tatsächlich BGR ist und wir es anhand des sehen können Bildform.
import cv2 import numpy as np image = cv2.imread ('input.jpg') # B, G, R-Wert für den ersten 0,0 Pixel B, G, R = Bilddruck (B, G, R) Druck (Bild).shape) #now wenn wir dies auf Graustufenbild anwenden grey_img = cv2.cvtColor (Bild, cv2.COLOR_BGR2GRAY) print (grey_img.shape) #gray_image Pixelwert für 10,50 Pixel print (grey_img)
Konsolenausgabe: Drucken (B, G, R) - 6 11 10
print (image.shape) - (183, 275, 3)
print (grey_img.shape) - (183, 275)
print (grey_img) - 69
Jetzt gibt es nur zwei Dimensionen in einem Graustufenbild, da wir uns daran erinnern, dass das Farbbild in drei Dimensionen gespeichert ist, wobei die dritte Dimension (R, G, B) ist, während in Graustufen nur zwei Dimensionen vorhanden sind, da (R, G), B) fehlt und für eine bestimmte Pixelposition erhalten wir nur einen einzigen Wert, während wir im farbigen Bild drei Werte erhalten.
Ein weiterer nützlicher Farbraum ist 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 ('Sättigungskanal', hsv_image) cv2.imshow ('Wertekanal', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Nach dem Ausführen des Codes können Sie die vier Bilder sehen, von denen drei von den einzelnen Kanälen stammen und eines ein kombiniertes HSV-Bild ist.
Das Farbtonkanalbild ist ziemlich dunkel, da sein Wert nur zwischen 0 und 180 variiert.
Beachten Sie auch, dass die imshow- Funktion versucht, Ihnen das RGB- oder BGR-Bild anzuzeigen , die HSV-Konvertierung jedoch überlappt.
Außerdem ähnelt der Wertekanal aufgrund seiner Helligkeit der Graustufen des Bildes.
Erkundung einzelner Komponenten des RGB-Bildes
import cv2 image = cv2.imread ('input.jpg') # Die Aufteilungsfunktion von opencv teilt die Bilder in jeden Farbindex auf. B, G, R = cv2.split (Bild) cv2.imshow ("Rot", R) cv2.imshow ("grün", G) cv2.imshow ("Blue", B) #making das Originalbild, indem die einzelnen Farbkomponenten verschmelzenden merged = cv2.merge () cv2.imshow ("fusioniert", verschmolzen) #amplifying die blaue Farbe fusionierte = cv2.merge () cv2.imshow ("zusammengeführt mit Blau verstärken", zusammengeführt) # Darstellung der Form einzelner Farbkomponenten. # Die Ausgabe wäre nur zweidimensional, was Höhe und Breite wäre, da das dritte Element der RGB-Komponente individuell dargestellt ist. Drucken (B.Form) Drucken (R.Form) Druck (G. Form) cv2.waitKey (0) cv2.destroyAllWindows ()
Konsolenausgabe: # Abmessungen des Bildes aus der Formfunktion
(183, 275)
(183, 275)
(183, 275)
Bild in einzelne RGB-Komponente konvertieren
Im folgenden Code haben wir eine Matrix von Nullen mit den Abmessungen des Bildes HxB erstellt. Null gibt ein Array zurück, das mit Nullen gefüllt ist, aber dieselben Abmessungen hat.
Die Formfunktion ist sehr nützlich, wenn wir die Dimension eines Bildes betrachten, und hier haben wir diese Formfunktion in Scheiben geschnitten. Die Form würde also alles bis zu bestimmten Punkten erfassen, dh bis zu den zweiten festgelegten Punkten, dh Höhe und Breite des Bildes, da der dritte die RGB-Komponente des Bildes darstellt und wir sie hier nicht benötigen.
cv2 importieren numpy importieren als np image = cv2.imread ('input.jpg') B, G, R = cv2.split (Bild) Nullen = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("ROT", cv2.merge ()) cv2.imshow ("Grün", cv2.merge ()) cv2.imshow ("Blau", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Histogrammdarstellung des Bildes
Die Histogrammdarstellung eines Bildes ist die Methode zur Visualisierung der Bildkomponenten.
Mit dem folgenden Code können Sie das Bild anhand des Farbhistogramms seiner kombinierten und einzelnen Farbkomponenten analysieren.
cv2 importieren numpy als np importieren #wir müssen matplotlib importieren, um Histogrammdiagramme zu erstellen importieren matplotlib.pyplot als plt image = cv2.imread ('input.jpg') histogram = cv2.calcHist (,, None,,) #we plot a Histogramm, ravel () glättet unser Bildarray plt.hist (image.ravel (), 256,) plt.show () # Anzeigen separater Farbkanäle color = ('b', 'g', 'r') #we know Trennen Sie die Farbe und zeichnen Sie sie jeweils im Histogramm für i, col in enumerate (color) auf: histogram2 = cv2.calcHist (,, None,,) plt.plot (histogram2, color = col) plt.xlim () plt.show ()
Lassen Sie uns die calcHist- Funktion mit jedem ihrer einzelnen Parameter verstehen
cv2.calcHist (Bilder, Kanäle, Maske, Histsize , Bereiche)
Bilder: Es ist das Quellbild vom Typ uint 8 oder float 32. Es sollte in eckigen Klammern angegeben werden, dh "", die auch das Array der zweiten Ebene angeben, da ein Bild für opencv Daten in Arrayform sind.
Kanäle: Es wird auch in eckigen Klammern angegeben. Dies ist der Index des Kanals, für den wir das Histogramm berechnen. Wenn die Eingabe beispielsweise ein Graustufenbild ist, ist dies der Wert für Farbbilder, die Sie übergeben können, oder zur Berechnung des Histogramms des blauen, grünen bzw. roten Kanals.
Maske: Maskenbild. Um das Histogramm des Vollbilds zu finden, wird es als "keine" angegeben. Wenn Sie jedoch das Histogramm eines bestimmten Bildbereichs suchen möchten, müssen Sie dafür ein Maskenbild erstellen und es als Maske angeben.
Histsize: Dies entspricht unserer BIN-Anzahl. Musste in eckigen Klammern angegeben werden, damit wir den vollen Maßstab erreichen können.
Bereiche: Dies ist normalerweise unser Bereich
Zeichnen von Bildern und Formen mit OpenCV
Im Folgenden finden Sie einige Beispiele zum Zeichnen von Linien, Rechtecken, Polygonen, Kreisen usw. in OpenCV.
import cv2 import numpy as np #Erstellen eines schwarzen Quadrats image = np.zeros ((512,512,3), np.uint8) #Wir können dies auch in Schwarzweiß erstellen, es würden jedoch keine Änderungen vorgenommen. image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("schwarzes Rechteck (Farbe)", Bild) cv2.imshow ("schwarzes Rechteck (Schwarzweiß)", image_bw)
Linie
#Erstellen Sie eine Linie über dem schwarzen Quadrat # cv2.line (Bild, Startkoordinaten, Endkoordinaten, Farbe, Dicke) # Zeichnen einer diagonalen Linie mit einer Dicke von 5 Pixel image = np.zeros ((512,512,3), np.uint8) cv2.line (Bild, (0,0), (511.511), (255.127,0), 5) cv2.imshow ("blaue Linie", Bild)
Rechteck
#Erstellen Sie ein Rechteck über einem schwarzen Quadrat # cv2.rectangle (Bild, Startkoordinaten, Endkoordinaten , Farbe, Dicke) # Zeichnen eines Rechtecks mit einer Dicke von 5 Pixel image = np.zeros ((512,512,3), np.uint8) cv2 Rechteck (Bild, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("Rechteck", Bild)
Kreis#Erstellen eines Kreises über einem schwarzen Quadrat # cv2.circle (Bild, Mitte, Radius, Farbe, Füllung) image = np.zeros ((512.512,3), np.uint8) cv2.circle (Bild, (100.100), (50), (255,127,0), - 1) cv2.imshow ("Kreis", Bild)
Polygon#Erstellen eines Polygonbildes = np.zeros ((512,512,3), np.uint8) #lets definieren vier Punkte pts = np.array (,,,], np.int32) #lets formen jetzt unsere Punkte in der von Polylinien pts = pts.reshape ((- 1,1,2)) cv2.polylines (Bild,, True, (0,255,255), 3) cv2.imshow ("Polygon", Bild)
Text# Text mit opencv eingeben # cv2.putText (Bild, 'anzuzeigender Text', Startpunkt links, Schriftart, Schriftgröße, Farbe, Dicke) image = np.zeros ((512,512,3), np.uint8) cv2. putText (Bild, "Hallo Welt", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("Hallo Welt", Bild) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision und OpenCV sind sehr umfangreiche Themen, aber dieses Handbuch ist ein guter Ausgangspunkt, um OpenCV und Bildverarbeitung zu erlernen.