[PYTHON] J'ai essayé de devenir un Ann Man en utilisant OpenCV

introduction

Synopsis

référence

Créer diverses vidéos Photoshop avec Python + OpenCV ② Créer une image fixe Photoshop

environnement

Python2.7

brew install python

Paramètre PATH

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

webcam

J'utilise l'appareil photo fourni avec mon MacBook.

Préparation

Obtenez l'image d'Ann Man

Faites-les préparer à la boulangerie.

Faire une image transparente

Référence anpan.png

Code source

Je n'ai pas fait beaucoup, donc je n'ai pas ajouté beaucoup de commentaires.

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]

                    #Un ajustement peut être nécessaire en fonction de la forme du visage
                    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))

                    #Redimensionnez l'image à composer pour l'adapter au rectangle.
                    image = cv2.resize(image, (w, h))

                    #Combinaison d'images avec le visage de la caméra.
                    frame = overlay(frame, image, x, y)

                    #Utilisez cette option si vous souhaitez effectuer un traitement de mosaïque.
                    # 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)

résultat

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

Résumé

――Il était utile d'avoir des informations inattendues.

Tous les liens de page

Recommended Posts

J'ai essayé de devenir un Ann Man en utilisant OpenCV
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
Je souhaite afficher une image sur Jupyter Notebook à l'aide d'OpenCV (mac)
J'ai essayé d'obtenir une image en grattant
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé de synthétiser des fichiers WAV en utilisant Pydub.
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé de déboguer.
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé d'approcher la fonction sin en utilisant le chainer
J'ai essayé de créer une application OCR avec PySimpleGUI
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé d'accéder aux feuilles de calcul Google en utilisant Python
J'ai essayé de trouver la classe alternative avec tensorflow
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé de fonctionner à partir de Postman en utilisant Cisco Guest Shell comme serveur API
J'ai essayé d'apprendre PredNet
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé d'organiser SVM.
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'implémenter PCANet
J'ai essayé d'utiliser Amazon Glacier