Eingabebild (Originalbild)
Das Ausgabebild (Bild nach der Konvertierung) und die Position des Katzengesichts werden erkannt und dort ein Kreis hinzugefügt.
Sie benötigen ein Google-Konto, da Sie Google Colaboratory verwenden.
Ab diesem Zeitpunkt wird alles außer der Vorbereitung der erforderlichen Dateien im Labor durchgeführt.
Geben Sie Folgendes in die erste Zelle des Labors ein und drücken Sie Umschalt + Eingabetaste. Es ist in Ordnung, wenn die OpenCV-Version (4.1.2 ab 2020.08.17) angezeigt wird.
%matplotlib inline #Inline-Matplotlib-Ausgabe(Kein Popup)Zu.
import cv2 #Laden Sie opencv
import matplotlib.pyplot as plt #Laden Sie matplotlib und verwenden Sie pyplot mit dem Namen plt.
print(cv2.__version__) #Zeigen Sie die Version von opencv an und überprüfen Sie das Laden.
#Ausgabe
# 4.1.2
Klicken Sie zunächst auf die Datei haarcascade_frontalcatface.xml, um das Gesicht der Katze zu erkennen.
Klicken Sie mit der rechten Maustaste auf Raw, um die Datei zu speichern.
Schreiben Sie den folgenden Code in die zweite Zelle und drücken Sie Umschalt + Eingabetaste.
from google.colab import files #Verwenden Sie Dateivorgänge aus der Laborbibliothek.
f = files.upload() #Laden Sie die Datei hoch.
Drücken Sie "Datei auswählen", um die Datei hochzuladen.
Die Datei lädt die folgenden zwei hoch.
Schreiben Sie den folgenden Code in die nächste Zelle, drücken Sie Umschalt + Eingabetaste, führen Sie ihn aus und bestätigen Sie, dass der Name der hochgeladenen Datei ausgegeben wird (in diesem Beispiel lautet der Dateiname des zu konvertierenden Bilds "IMG_20200808_181512". .jpg ").
!ls #Führen Sie den Systembefehl ls aus, um zu überprüfen, ob die Datei hochgeladen wurde.
#Ausgabe
# haarcascade_frontalcatface.xml IMG_20200808_181512.jpg sample_data
Schreiben Sie den folgenden Code in eine neue Zelle und drücken Sie Umschalt + Eingabetaste, um ihn auszuführen.
#Dateiname(IMG_20200808_181512.jpg)Bitte ändern Sie den Dateinamen des Bildes, das Sie hochgeladen haben.
img = cv2.imread("./IMG_20200808_181512.jpg ") #Bilder laden
show_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #Erstellen Sie ein Bild im BGR-Format, das zur Anzeige in das RGB-Format konvertiert wurde.
plt.imshow(show_img) # matplot.Zeigen Sie das mit lib gelesene Bild an.
Es ist in Ordnung, wenn das hochgeladene Bild wie unten gezeigt angezeigt wird.
Schreiben Sie den folgenden Code in eine neue Zelle und drücken Sie Umschalt + Eingabetaste, um ihn auszuführen. Einzelheiten zu cv2.circle und cv2.putText finden Sie unter OpenCV-Zeichnungsfunktion. Bitte beziehen Sie sich auf py_drawing_functions.html) usw.
#Generieren Sie ein Modell aus einer trainierten Datei
face_cascade = cv2.CascadeClassifier('./haarcascade_frontalcatface.xml')
#Graues Bild erzeugen
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#Gesichtserkennung
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
#Schleife mit Erkennungsergebnis x,y:Oben links im Gesichtsrechteck, w,h:Breite und Höhe des Gesichtsrechtecks
for (x,y,w,h) in faces:
#Zeichnen Sie einen Kreis an der Position des Gesichts
img = cv2.circle(img,(x+int(w/2),y+int(h/2)),int(max(w/2,h/2)),(0,0,255),12)
#Zeichne einen Pfeil mit Buchstaben
cv2.putText(img,"<---",(x+w,y+int(h/2)),cv2.FONT_HERSHEY_SIMPLEX,8,(0,0,255),32,cv2.LINE_AA)
#Zum Zeichnen in RGB konvertieren
show_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#Das Ergebnis zeichnen
plt.imshow(show_img)
Wenn ein Kreis auf das Gesicht der Katze gezeichnet und ein Pfeil wie unten gezeigt angebracht wird, ist dies erfolgreich. Es gibt jedoch Zeiten, in denen das Gesicht nicht erkannt werden kann. In diesem Bild steht uns beispielsweise die dreihaarige Katze gegenüber, aber das Gesicht ist nicht erkennbar.
Weitere Informationen finden Sie auf Websites wie OpenCV-Python Tutorial.
Recommended Posts