[PYTHON] Ich habe versucht, mit OpenCV Ann Man zu werden

Einführung

Zusammenfassung

Referenz

Verschiedene Photoshop-Videos mit Python + OpenCV erstellen ② Standbild Photoshop erstellen

Umgebung

Python2.7

brew install python

PFAD-Einstellung

if [ -d $(brew --prefix)/lib/python2.7/site-packages ];then
  export PYTHONPATH=$(brew --prefix)/lib/python2.7/site-packages:$PYTHONPAT
fi

OpenCV2

brew install opencv

Numpy

pip install numpy

Web-Kamera

Ich verwende die Kamera, die mit meinem MacBook geliefert wurde.

Vorbereitung

Holen Sie sich das Bild von Ann Man

Lass sie in der Bäckerei machen.

Machen Sie ein transparentes Bild

Referenz anpan.png

Quellcode

Ich habe nicht so viel getan, also habe ich nicht viel Kommentar hinzugefügt.

webcam.py


#! -*- coding: utf-8 -*-

import cv2
import numpy as np
from PIL import Image

def facedetect(face_cascade, cap, image):
    cnt = 0

    while(True):
        ret, frame = cap.read()

        if ret == False:
            break
        else:
            if (cnt % 10) == 0:
                gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

                facerect = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

            cnt += 1

            if len(facerect) > 0:
                for rect in facerect:

                    x = rect[0]
                    y = rect[1]
                    w = rect[2]
                    h = rect[3]

                    #Je nach Gesichtsform kann eine Anpassung erforderlich sein
                    x = x - w / 2
                    y = y - h / 1.8
                    w = w * 1.7
                    h = h * 1.7

                    x = int(round(x))
                    y = int(round(y))
                    w = int(round(w))
                    h = int(round(h))

                    #Passen Sie die Größe des zusammenzusetzenden Bildes an das Rechteck an.
                    image = cv2.resize(image, (w, h))

                    #Kombinieren von Bildern mit dem Kameragesicht.
                    frame = overlay(frame, image, x, y)

                    #Verwenden Sie diese Option, wenn Sie eine Mosaikverarbeitung durchführen möchten.
                    # dst = frame[y:y+h, x:x+w]
                    # blur = cv2.blur(dst, (50, 50))
                    # frame[y:y+h, x:x+w] = blur

        cv2.imshow('fram', frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

def overlay(frame, image, x, y):
    height, width = image.shape[:2]

    layer1 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    layer2 = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA)

    layer1 = Image.fromarray(layer1)
    layer2 = Image.fromarray(layer2)

    layer1 = layer1.convert('RGBA')
    layer2 = layer2.convert('RGBA')

    tmp = Image.new('RGBA', layer1.size, (255, 255, 255, 0))
    tmp.paste(layer2, (x, y), layer2)

    result = Image.alpha_composite(layer1, tmp)

    return cv2.cvtColor(np.asarray(result), cv2.COLOR_RGBA2BGRA)

if __name__ == '__main__':
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
    image = cv2.imread('anpan.png', cv2.IMREAD_UNCHANGED)

    cap = cv2.VideoCapture(0)
    cap.set(3, 640)
    cap.set(4, 480)

    facedetect(face_cascade, cap, image)

Ergebnis

スクリーンショット 2017-06-26 3.05.34.png

Zusammenfassung

――Es war hilfreich, unerwartete Informationen zu haben.

Alle Seitenlinks

Recommended Posts

Ich habe versucht, mit OpenCV Ann Man zu werden
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich möchte ein Bild auf Jupyter Notebook mit OpenCV (Mac) anzeigen.
Ich habe versucht, durch Schaben ein Bild zu bekommen
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, WAV-Dateien mit Pydub zu synthetisieren.
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, eine Umgebung zu erstellen, um regelmäßig mit Selenium mit AWS Fargate zu überprüfen
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, eine OCR-App mit PySimpleGUI zu erstellen
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, mit Python auf Google Spread Sheets zuzugreifen
Ich habe versucht, die alternative Klasse mit Tensorflow zu finden
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, von Postman aus mit Cisco Guest Shell als API-Server zu arbeiten
Ich habe versucht, PredNet zu lernen
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, SVM zu organisieren.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, Amazon Glacier zu verwenden