本文主要和大家分享python擷取人臉的代碼分享,希望大家根據本文能完成python擷取人臉的功能。
usage:python getface.py src out
# -*- codeing: utf-8 -*-import sysimport osimport cv2import dlibinput_dir = sys.argv[1]output_dir = sys.argv[2]print(input_dir)print(output_dir)size = 64if not os.path.exists(output_dir): os.makedirs(output_dir)# 使用dlib內建的frontal_face_detector作為我們的特徵提取器detector = dlib.get_frontal_face_detector()index = 1for (path, dirnames, filenames) in os.walk(input_dir): for filename in filenames: if filename.endswith('.jpg'): print('Being processed picture %s' % index) img_path = path + '/' + filename # 從檔案讀取圖片 img = cv2.imread(img_path) # 轉為灰階圖片 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用detector進行臉部偵測 dets為返回的結果 dets = detector(gray_img, 1) # 使用enumerate 函數遍曆序列中的元素以及它們的下標 # 下標i即為人臉序號 # left:人臉左邊距離圖片左邊界的距離 ;right:人臉右邊距離圖片左邊界的距離 # top:人臉上邊距離圖片上邊界的距離 ;bottom:人臉下邊距離圖片上邊界的距離 for i, d in enumerate(dets): x1 = d.top() if d.top() > 0 else 0 y1 = d.bottom() if d.bottom() > 0 else 0 x2 = d.left() if d.left() > 0 else 0 y2 = d.right() if d.right() > 0 else 0 # img[y:y+h,x:x+w] face = img[x1:y1, x2:y2] # 調整圖片的尺寸 face = cv2.resize(face, (size, size)) #cv2.imshow('image', face) # 儲存圖片 cv2.imwrite(output_dir + '/' + str(index) + '.jpg', face) index += 1 key = cv2.waitKey(30) & 0xff if key == 27: sys.exit(0) # -*- codeing: utf-8 -*-