nndl course proj
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.5 KiB

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
3 years ago
import ntpath
CASCADE_PATH = "fr_env/lib/python3.8/site-packages/cv2/data/haarcascade_frontalface_default.xml"
def display_image(img):
plt.imshow(img)
plt.show()
3 years ago
def path_leaf(path):
head, tail = ntpath.split(path)
return tail or ntpath.basename(head)
if len(sys.argv) < 2:
print("no input image")
exit(1)
3 years ago
if len(sys.argv) < 3:
print("no output folder")
exit(1)
op_path = sys.argv[2]
print(sys.argv[1])
raw_img = cv2.imread(sys.argv[1])
3 years ago
print(raw_img.shape)
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)
3 years ago
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]))
ind+=1
# cv2.waitKey(0)
cv2.destroyAllWindows()