Skip to content
This repository was archived by the owner on Apr 30, 2023. It is now read-only.

Commit b4797d8

Browse files
committed
Initial commit
0 parents  commit b4797d8

22 files changed

+352082
-0
lines changed

deal_with_it.py

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import cv2
2+
3+
4+
eyes = cv2.CascadeClassifier("haarcascades/haarcascade_eye.xml")
5+
face = cv2.CascadeClassifier("haarcascades/haarcascade_frontalface_alt.xml")
6+
image = cv2.imread("glasses.png", -1)
7+
capture = cv2.VideoCapture(0)
8+
9+
def deal_with_it(eyes_cascade, face_cascade, glasses_img):
10+
'''live meme generator'''
11+
12+
#mask
13+
glasses_mask = glasses_img[:, :, 3]
14+
glasses_mask_inv = cv2.bitwise_not(glasses_mask)
15+
16+
glasses_img = glasses_img[:, :, 0:3]
17+
orig_glasses_height, orig_glasses_width = glasses_img.shape[:2]
18+
19+
while (True):
20+
# Capture video feed
21+
unused, img = capture.read()
22+
frame = cv2.flip(img, 1)
23+
24+
# grayscale
25+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
26+
27+
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30, 30),flags=cv2.CASCADE_SCALE_IMAGE)
28+
29+
for (x, y, w, h) in faces:
30+
31+
roi_gray = gray[y:y+h, x:x+w]
32+
roi_color = frame[y:y+h, x:x+w]
33+
34+
eyes = eyes_cascade.detectMultiScale(roi_gray)
35+
36+
for (nx,ny,nw,nh) in eyes:
37+
38+
glasses_width = nw * 4
39+
glasses_height = orig_glasses_height * 2
40+
area = glasses_width * glasses_height
41+
42+
# possition
43+
x1 = nx - glasses_width * 2
44+
x2 = nx + nw + glasses_width * 2
45+
y1 = ny + nh - glasses_height
46+
y2 = ny + nh + glasses_height
47+
48+
# black magic
49+
if x1 < 0:
50+
x1 = 0
51+
if x2 > w:
52+
x2 = w
53+
if y1 < 0:
54+
y1 = 0
55+
if y2 > h:
56+
y2 = h
57+
58+
# adjust bassed on black magic
59+
glasses_height = y2 - y1
60+
glasses_width = x2 - x1
61+
62+
# rescale
63+
glasses = cv2.resize(glasses_img, (glasses_width,glasses_height), interpolation = cv2.INTER_AREA)
64+
mask = cv2.resize(glasses_mask, (glasses_width,glasses_height), interpolation = cv2.INTER_AREA)
65+
mask_inv = cv2.resize(glasses_mask_inv, (glasses_width,glasses_height), interpolation = cv2.INTER_AREA)
66+
67+
# some more black magic
68+
roi = roi_color[y1:y2, x1:x2]
69+
70+
# difference between regions of interest
71+
roi_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
72+
roi_fg = cv2.bitwise_and(glasses,glasses,mask = mask)
73+
74+
# combine regions
75+
dst = cv2.add(roi_bg,roi_fg)
76+
roi_color[y1:y2, x1:x2] = dst
77+
78+
break
79+
80+
# video feed
81+
cv2.imshow("Deal With It @ SalemStateMemes.edu", frame)
82+
83+
#exit
84+
if cv2.waitKey(1) == 27: #esc key
85+
break
86+
87+
capture.release()
88+
cv2.destroyAllWindows()
89+
90+
if __name__ == '__main__':
91+
deal_with_it(eyes, face, image)

dwi.png

13.5 KB
Loading

glasses.png

2.54 KB
Loading

glasses2.png

2.77 KB
Loading

0 commit comments

Comments
 (0)