Verschiedene Photoshop-Videos mit Python + OpenCV erstellen ② Standbild Photoshop erstellen
Python2.7
brew install python
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
Ich verwende die Kamera, die mit meinem MacBook geliefert wurde.
Lass sie in der Bäckerei machen.
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)
――Es war hilfreich, unerwartete Informationen zu haben.
Recommended Posts