fr/face_cutter.py

66 lines
1.5 KiB
Python
Raw Normal View History

2021-03-02 00:32:58 +05:30
from skimage.io import imread, imshow
from skimage.transform import resize
from skimage.feature import hog
from skimage import exposure
import matplotlib.pyplot as plt
import sys
import cv2
import os
import numpy as np
2021-03-02 18:34:59 +05:30
import ntpath
2021-03-02 00:32:58 +05:30
CASCADE_PATH = "fr_env/lib/python3.8/site-packages/cv2/data/haarcascade_frontalface_default.xml"
def display_image(img):
plt.imshow(img)
plt.show()
2021-03-02 18:34:59 +05:30
def path_leaf(path):
head, tail = ntpath.split(path)
return tail or ntpath.basename(head)
2021-03-02 00:32:58 +05:30
if len(sys.argv) < 2:
print("no input image")
exit(1)
2021-03-02 18:34:59 +05:30
if len(sys.argv) < 3:
print("no output folder")
exit(1)
op_path = sys.argv[2]
print(sys.argv[1])
2021-03-02 00:32:58 +05:30
raw_img = cv2.imread(sys.argv[1])
2021-03-02 18:34:59 +05:30
print(raw_img.shape)
2021-03-02 00:32:58 +05:30
img = cv2.cvtColor(raw_img, cv2.COLOR_BGR2GRAY)
print(img.shape)
# resized_img = resize(img,(1000,1000))
resized_img =img
print(resized_img.shape)
# display_image(resized_img)
face_classifier = cv2.CascadeClassifier(CASCADE_PATH)
# resized_img = np.array(resized_img, dtype='uint8')
faces = face_classifier.detectMultiScale(resized_img, 1.3,3) ### (inp_img, scaling_factor, minNeighbours )
print(len(faces))
if len(faces) == 0:
print("No faces found")
ind = 0
for (x,y,w,h) in faces:
cv2.rectangle(resized_img, (x,y), (x+w,y+h), (127,0,255), 2 )
cropped = resized_img[y:y+h, x:x+w]
# cv2.imshow('Face', cropped)
2021-03-02 18:34:59 +05:30
cv2.imwrite( op_path + "/faceof_"+str(ind)+path_leaf(sys.argv[1]),cropped)
# print("***", op_path, op_path + "/faceof_"+str(ind)+path_leaf(sys.argv[1]))
2021-03-02 00:32:58 +05:30
ind+=1
# cv2.waitKey(0)
cv2.destroyAllWindows()