Als ich ein Programm schrieb, um ein Gesicht durch tiefes Lernen zu erkennen, musste ich ein Bild vorbereiten, das nur das Gesicht zeigt. Als Methode wurde ein Gesicht aus einem Bild erkannt, das eine Person zeigt, und dieser Teil wurde ausgeschnitten. Zu diesem Zeitpunkt wurde es mit dem Array geschnitten, das von der imread-Methode von OpenCV zurückgegeben wurde. Dieser Artikel beschreibt die von imread zurückgegebenen Sequenzen.
Es ist eine Funktion, die ein Bild aus einer Datei lesen kann, indem das im Argument zu lesende Bild angegeben wird, z. B. image = imread ('sample.jpg'). Zu diesem Zeitpunkt wird der Pixelwert (RGB-Wert) jedes Pixels von sample.jpg durch Imread im Bild gespeichert. Führen Sie das folgende Programm aus und überprüfen Sie es.
imread_test.py
import cv2
#Bild laden
image = cv2.imread('sample.jpg')
#Geben Sie das von imread zurückgegebene Array aus
print(image)
#Zeigen Sie das geladene Bild an
cv2.imshow('img',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Die Ausgabe ist wie folgt. Auf diese Weise ist ersichtlich, dass das dreidimensionale Array ausgegeben wird. Dieses Array sei ein A × B × 3D-Array. A ist die Anzahl der Pixelzeilen und B ist die Anzahl der Pixelspalten (Variablen A und B werden verwendet, da sich die Größe der Matrix in Abhängigkeit von der Größe des zu lesenden Bildes ändert). 3 ist die Helligkeit von RGB. Im obigen Bild ist viel Helligkeit vertikal ausgerichtet, dies ist jedoch der Fall Sie sind in der Reihenfolge [[[Helligkeit der 0. Zeile und 0. Spalte] ~ [Helligkeit der 0. Zeile und der Bth Spalte]] ~ [[Helligkeit der A Zeile und der 0. Spalte] ~ [Helligkeit der A Zeile und der Bth Spalte]] angeordnet. .. (Im Bild ist die 0. Zeile und 0. Spalte oben links) Daher speichert das von imread zurückgegebene Array die Helligkeit der Pixel in der Reihenfolge der Matrix.
Im Hintergrund von Kapitel 1 wurde, wie erläutert, das Gesichtsbild mit dem von imread zurückgegebenen Array ausgeschnitten. Zunächst werden die obere linke Position und die untere rechte Position des erfassten Gesichtsbildes erfasst. Dann war es möglich, durch Extrahieren nur des Teils des Gesichtsbildes (Helligkeit der Teilungsmatrix von der oberen linken Matrix des Gesichtsbildes zur unteren rechten Matrix) des durch Imread zurückgegebenen Arrays auszuschneiden. Ich werde die Details in einem anderen Artikel erklären.
Recommended Posts