Camera filter (2020.05) === ###### tags: `Side Project`, `Python` ## Brief ## Result ## Code ``` import numpy as np import cv2 import time import datetime from PIL import Image # Face recognition def getface(img): # face face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # eye eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') # Binary, Grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: # draw border img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # add filter img = filter(img,x,y,w,h) return img def filter(img,x,y,w,h): im = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) # sticker mark=Image.open("hat2.png") height = int(w*987/1024) mark = mark.resize((w, height)) layer=Image.new('RGBA', im.size, (0,0,0,0)) layer.paste(mark, (x,y-height)) out=Image.composite(layer,im,layer) img = cv2.cvtColor(np.asarray(out),cv2.COLOR_RGB2BGR) return img cap = cv2.VideoCapture(0) videoWriter = cv2.VideoWriter('testwrite.avi', cv2.VideoWriter_fourcc(*'MJPG'), 15, (1000,563)) while(cap.isOpened()): ret, frame = cap.read() if ret==True: # resize pic img = cv2.resize(frame,(1000,563)) # recognize img = getface(img) # show videl cv2.imshow('frame',img) # save videl videoWriter.write(img) if cv2.waitKey(10) & 0xFF == ord('q'): print("END") break else: break cap.release() videoWriter.release() cv2.destroyAllWindows() ```