I want to place a transparent image on the location of where cv2
detects my eyes. I've accomplished the main two steps, and now I need to combine them.
For instance, here is the output with the image transparency working, and here is the output with the eye detection working. The script and images are below, I'm not sure what to do.
Images
app.py
import os
import numpy
import cv2
from PIL import Image
from os.path import join, dirname, realpath
def upload_files():
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
face_cascade = cv2.CascadeClassifier('/Users/matt/Python/LazerEyes/haarcascade_eye.xml')
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml
eye_cascade = cv2.CascadeClassifier('/Users/matt/Python/LazerEyes/haarcascade_eye.xml')
img = cv2.imread('new.png')
dot = cv2.imread('dot_transparent.png', cv2.IMREAD_UNCHANGED)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray_to_place = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_h, img_w = gray.shape
img_to_place_h, img_to_place_w = gray_to_place.shape
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eyes:
dot = cv2.resize(dot, (eh, ew))
# Prepare pixel-wise alpha blending
dot_alpha = dot[..., :3] / 255.0
dot_alpha = numpy.repeat(dot_alpha[..., numpy.newaxis], 3, axis=2)
dot = dot[..., :3]
resized_img = cv2.resize(dot, (eh, ew), interpolation = cv2.INTER_AREA)
resized_img_h, resized_img_w, _ = resized_img.shape
#pointsOnFace = []
#integersToAppend = eh
#pointsOnFace.append(integersToAppend)
#print(pointsOnFace)
roi_color[ey:ey+resized_img_h, ex:ex+resized_img_w, :] = resized_img
cv2.imwrite('out.png', img)