diff --git a/assest/ear_cat.png b/assest/ear_cat.png new file mode 100644 index 0000000..8aa4458 Binary files /dev/null and b/assest/ear_cat.png differ diff --git a/assest/ear_devil.png b/assest/ear_devil.png new file mode 100644 index 0000000..edc0766 Binary files /dev/null and b/assest/ear_devil.png differ diff --git a/assest/ear_mouse.png b/assest/ear_mouse.png new file mode 100644 index 0000000..2c83ae7 Binary files /dev/null and b/assest/ear_mouse.png differ diff --git a/assest/eye1.png b/assest/eye1.png new file mode 100644 index 0000000..c6fb1a0 Binary files /dev/null and b/assest/eye1.png differ diff --git a/assest/eye2.png b/assest/eye2.png new file mode 100644 index 0000000..e53e72f Binary files /dev/null and b/assest/eye2.png differ diff --git a/assest/eye_ghoul.png b/assest/eye_ghoul.png new file mode 100644 index 0000000..1110031 Binary files /dev/null and b/assest/eye_ghoul.png differ diff --git a/assest/gggg.png b/assest/gggg.png new file mode 100644 index 0000000..cefdaef Binary files /dev/null and b/assest/gggg.png differ diff --git a/assest/ghoul.png b/assest/ghoul.png new file mode 100644 index 0000000..181d832 Binary files /dev/null and b/assest/ghoul.png differ diff --git a/assest/ghoul2.png b/assest/ghoul2.png new file mode 100644 index 0000000..8b4ca39 Binary files /dev/null and b/assest/ghoul2.png differ diff --git a/assest/glass1.png b/assest/glass1.png new file mode 100644 index 0000000..c291c66 Binary files /dev/null and b/assest/glass1.png differ diff --git a/assest/glass2.png b/assest/glass2.png new file mode 100644 index 0000000..6f33cbb Binary files /dev/null and b/assest/glass2.png differ diff --git a/assest/glass3.png b/assest/glass3.png new file mode 100644 index 0000000..d788008 Binary files /dev/null and b/assest/glass3.png differ diff --git a/assest/glass4.png b/assest/glass4.png new file mode 100644 index 0000000..c21172f Binary files /dev/null and b/assest/glass4.png differ diff --git a/assest/glass5.png b/assest/glass5.png new file mode 100644 index 0000000..9cccfd6 Binary files /dev/null and b/assest/glass5.png differ diff --git a/assest/hair.png b/assest/hair.png new file mode 100644 index 0000000..328925a Binary files /dev/null and b/assest/hair.png differ diff --git a/assest/hair2.png b/assest/hair2.png new file mode 100644 index 0000000..8995d2a Binary files /dev/null and b/assest/hair2.png differ diff --git a/assest/hair3.png b/assest/hair3.png new file mode 100644 index 0000000..aa53875 Binary files /dev/null and b/assest/hair3.png differ diff --git a/assest/hair4.png b/assest/hair4.png new file mode 100644 index 0000000..9c338ef Binary files /dev/null and b/assest/hair4.png differ diff --git a/assest/hair5.png b/assest/hair5.png new file mode 100644 index 0000000..3ebd544 Binary files /dev/null and b/assest/hair5.png differ diff --git a/assest/hair6.png b/assest/hair6.png new file mode 100644 index 0000000..4b9dd40 Binary files /dev/null and b/assest/hair6.png differ diff --git a/assest/hair7.png b/assest/hair7.png new file mode 100644 index 0000000..9bdabd9 Binary files /dev/null and b/assest/hair7.png differ diff --git a/assest/hair8.png b/assest/hair8.png new file mode 100644 index 0000000..89b7d31 Binary files /dev/null and b/assest/hair8.png differ diff --git a/assest/hair9.png b/assest/hair9.png new file mode 100644 index 0000000..b835895 Binary files /dev/null and b/assest/hair9.png differ diff --git a/assest/mask.png b/assest/mask.png new file mode 100644 index 0000000..a560ec7 Binary files /dev/null and b/assest/mask.png differ diff --git a/baby.mp4 b/baby.mp4 new file mode 100644 index 0000000..c738abe Binary files /dev/null and b/baby.mp4 differ diff --git a/filters/__pycache__/dogfilter.cpython-39.pyc b/filters/__pycache__/dogfilter.cpython-39.pyc index 7d42965..6dc4535 100644 Binary files a/filters/__pycache__/dogfilter.cpython-39.pyc and b/filters/__pycache__/dogfilter.cpython-39.pyc differ diff --git a/filters/__pycache__/filter1.cpython-39.pyc b/filters/__pycache__/filter1.cpython-39.pyc index 3d23894..0f2661a 100644 Binary files a/filters/__pycache__/filter1.cpython-39.pyc and b/filters/__pycache__/filter1.cpython-39.pyc differ diff --git a/filters/__pycache__/mouse.cpython-39.pyc b/filters/__pycache__/mouse.cpython-39.pyc new file mode 100644 index 0000000..b788b3f Binary files /dev/null and b/filters/__pycache__/mouse.cpython-39.pyc differ diff --git a/filters/mouse.py b/filters/mouse.py new file mode 100644 index 0000000..9ee8cc0 --- /dev/null +++ b/filters/mouse.py @@ -0,0 +1,73 @@ +import cv2 +import numpy as np +import dlib +from math import hypot +filter_image = cv2.imread("assest\ghoul2.png") +filter_image3 = cv2.imread("assest/hair9.png") +filter_image4 = cv2.imread("assest/eye1.png") +filter_image5 = cv2.imread("assest/eye2.png") + + +# Loading Face detector +detector = dlib.get_frontal_face_detector() +predictor = dlib.shape_predictor("assest\shape_predictor_68_face_landmarks.dat") + +def filteringmouse(cap,rows, cols): + filter1 = np.zeros((rows, cols), np.uint8) + _, frame = cap.read() + filter1.fill(0) + gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + faces = detector(frame) + + # if faces: + try: + filter(frame,gray_frame,faces,filter_image,66,66,1,1,20) + # filter(frame, gray_frame, faces, filter_image3,27,27,1.5,2,25) + + filter(frame, gray_frame, faces, filter_image3,27,27,1.5,1,100) + filter(frame, gray_frame, faces, filter_image4,40,40,0.2,0.4,5) + filter(frame, gray_frame, faces, filter_image5,46,46,0.2,0.4,5) + + + + except: + _, frame_f = cap.read() + cv2.imshow("Frame", frame_f) + # else: + # _, frame_f = cap.read() + # cv2.imshow("Frame", frame_f) +def filter(frame,gray_frame,faces,filter_image1,X,Y,width,height,above=0,left=0): + for face in faces: + landmarks = predictor(gray_frame, face) + + # filter coordinates + # top_filter = (landmarks.part(27).x+10, landmarks.part(24).y+10) + center_filter = (landmarks.part(X).x-left, landmarks.part(Y).y-above) + left_filter = (landmarks.part(4).x, landmarks.part(4).y) + right_filter = (landmarks.part(14).x, landmarks.part(14).y) + + filter_width = int(hypot(left_filter[0] - right_filter[0], + left_filter[1] - right_filter[1]) * width) + filter_height = int(filter_width * height) + + # New filter position + top_left = (int(center_filter[0] - filter_width / 2), + int(center_filter[1] - filter_height / 2)) + bottom_right = (int(center_filter[0] + filter_width / 2), + int(center_filter[1] + filter_height / 2)) + + # Adding the new filter + # coloring + filtery = cv2.resize(filter_image1, (filter_width, filter_height)) + filtery_gray = cv2.cvtColor(filtery, cv2.COLOR_BGR2GRAY) + _, filter1 = cv2.threshold(filtery_gray, 25, 255, cv2.THRESH_BINARY_INV) + + filter_area = frame[top_left[1]: top_left[1] + filter_height, + top_left[0]: top_left[0] + filter_width] + filter_area_no_filter = cv2.bitwise_and(filter_area, filter_area, mask=filter1) + final_filter = cv2.add(filter_area_no_filter, filtery) + + frame[top_left[1]: top_left[1] + filter_height, + top_left[0]: top_left[0] + filter_width,:] = final_filter + + cv2.imshow("Frame", frame) \ No newline at end of file diff --git a/main.py b/main.py index 8abb01a..725952b 100644 --- a/main.py +++ b/main.py @@ -2,15 +2,19 @@ import numpy as np import dlib from filters.filter1 import filtering -from filters.dogfilter import filteringdog +# from filters.dogfilter import filteringdog +from filters.mouse import filteringmouse + # Loading Camera and Nose image and Creating mask cap = cv2.VideoCapture(0) +cap.set(3, 1920) +cap.set(4, 1080) _, frame = cap.read() # print(frame) rows, cols, _ = frame.shape filter1 = np.zeros((rows, cols), np.uint8) while True: - filteringdog(cap,rows, cols) + filteringmouse(cap,rows, cols) key = cv2.waitKey(1) if key == 27: break \ No newline at end of file