https://pythonprogramming.net/haar-cascade-object-detection-python-opencv-tutorial/
Autoren-Archiv: Johannes
Ressourcen: Stimmenerkennung, Emotionen
Gesichts- und Mimikenerkennung mit Python
Vorbereitung
- Installation v. cv2, numpy und imutils
- Download der xml-Dateien
- Organisation der zu analysierenden Videofiles
Code-Anpassungen
- „minSize“ beschreibt die Mind.-Gesichtsgröße in Pixel
- „minNeighbors“ & „scaleFactor“ beschreibt div. Tuningmetriken
- „cv2.VideoCapture“ beschreibt die Quelle. cv2.VideoCapture(0) -> Webcam
Code
import cv2
import numpy as np
import imutils
from tensorflow.keras.models import load_model
# Gesichtserkennungs-Modell laden
# face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + ‚haarcascade_profileface.xml‘)
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades + ‚haarcascade_frontalface_default.xml‘)
# Mimik-Erkennungs-Modell laden
# emotion_classifier = load_model(“, compile=True)
emotion_classifier = load_model(‚fer_model.h5‘, compile=True)
emotion_labels = {0: ‚Angry‘, 1: ‚Disgust‘, 2: ‚Fear‘, 3: ‚Happy‘, 4: ‚Sad‘, 5: ‚Surprise‘, 6: ‚Neutral‘}
# Video-Stream initialisieren
cap = cv2.VideoCapture(„Dateiname“)
while True:
ret, frame = cap.read()
if not ret:
break
# Gesichtserkennung
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(150, 150), flags=cv2.CASCADE_SCALE_IMAGE)
for (x, y, w, h) in faces:
# Gesichtsausschnitt extrahieren
face = gray[y:y + h, x:x + w]
face = cv2.resize(face, (48, 48))
face = face.astype(„float“) / 255.0
face = np.expand_dims(face, axis=0)
face = np.expand_dims(face, axis=-1)
# Mimik erkennen
predictions = emotion_classifier.predict(face)[0]
emotion_probability = np.max(predictions)
label = emotion_labels[np.argmax(predictions)]
# Rechteck um das Gesicht zeichnen
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# Text mit der erkannten Mimik hinzufügen
cv2.putText(frame, label, (x, y – 10), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 255, 0), 2)
cv2.imshow(‚frame‘, frame)
if cv2.waitKey(1) & 0xFF == ord(‚q‘):
break
cap.release()
cv2.destroyAllWindows()
Vorstellung: Youtube-Kanal
Ab sofort werde ich auf https://www.youtube.com/@Magic_Data_Playground/videos in unregelmäßigen Abständen Beispielvideos aus dem internen DataSience – „Labor“ veröffentlichen. Schwerpunkt sind diverse KNIME-Visualisierungen.
Potentiell spannende Ressourcen: Satelliten-Daten
https://www.nesdis.noaa.gov/data-research-services/data-collections
https://skywatch.com/free-sources-of-satellite-data/
ToDo: API-Ansätze, Daten etc. sind zu prüfen.
SQL – Spalte Updaten + Substring löschen
UPDATE content SET „File name“ = replace( „File name“, ‚.txt‘, “ )
Beispiel für Json_extract (SQLite)
select distinct json_extract(coordinates, ‚$.longitude‘) AS long,json_extract(coordinates, ‚$.latitude‘) AS lat from twitter where coordinates not null limit 10
Tipp: Gänsefüsschen bei schlecht aufgesetzten JSON-Schnipsel einfügen
UPDATE twitter SET coordinates = replace(coordinates,“‚“ ,Char(34) )
Viele (!) CSV-Dateien zu einer CSV zusammen führen
Bedingt durch das Datamining bei div. Jobs werden viele dieser Daten hier generiert u. weil ich zu faul bin, die Objekte mühsam u. händisch in die SQLite-Imports zu werfen, gehe ich so vor:
Windows10 -> Eingabeaufforderung -> copy *.csv newfile.csv
Import via SQLitestudio
Tip: Bei Excel einen Zeilenumbruch einfügen
„Doppelklicken Sie auf die Zelle, in der Sie einen Zeilenumbruch eingeben möchten. Tipp: Sie können auch die Zelle auswählen und dann F2 drücken. Klicken Sie in der Zelle auf die Position, an der Sie die Linie umbrechen möchten, und drücken Sie ALT+EINGABETASTE“
Quelle: Microsoft