模块化裁剪
This commit is contained in:
38
ImageProcessing/__init__.py
Normal file
38
ImageProcessing/__init__.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import logging
|
||||
import config
|
||||
import importlib
|
||||
|
||||
def face_crop(filename, width, height):
|
||||
# 新宽度是高度的2/3
|
||||
cropWidthHalf = int(height/3)
|
||||
try:
|
||||
locations_model = filter(lambda x: x, config.getInstance().face_locations_model().lower().split(','))
|
||||
for model in locations_model:
|
||||
center = face_center(filename, model)
|
||||
# 如果找到就跳出循环
|
||||
if center:
|
||||
cropLeft = center-cropWidthHalf
|
||||
cropRight = center+cropWidthHalf
|
||||
# 越界处理
|
||||
if cropLeft < 0:
|
||||
cropLeft = 0
|
||||
cropRight = cropWidthHalf*2
|
||||
elif cropRight > width:
|
||||
cropLeft = width-cropWidthHalf*2
|
||||
cropRight = width
|
||||
return (cropLeft, 0, cropRight, height)
|
||||
except:
|
||||
print('[-]Not found face! ' + filename)
|
||||
# 默认靠右切
|
||||
return (width-cropWidthHalf*2, 0, width, height)
|
||||
|
||||
|
||||
def face_center(filename, model):
|
||||
print('[+]Use model ' + model)
|
||||
try:
|
||||
mod = importlib.import_module('.' + model,'ImageProcessing')
|
||||
return mod.face_center(filename, model)
|
||||
except BaseException as e:
|
||||
print('[-]Model found face ' + filename)
|
||||
logging.error(e)
|
||||
return 0
|
||||
4
ImageProcessing/cnn.py
Normal file
4
ImageProcessing/cnn.py
Normal file
@@ -0,0 +1,4 @@
|
||||
import hog
|
||||
|
||||
def face_center(filename, model):
|
||||
return hog.face_center(filename, model)
|
||||
10
ImageProcessing/hog.py
Normal file
10
ImageProcessing/hog.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import face_recognition
|
||||
|
||||
def face_center(filename, model):
|
||||
image = face_recognition.load_image_file(filename)
|
||||
face_locations = face_recognition.face_locations(image, 0, model)
|
||||
if face_locations:
|
||||
top, right, bottom, left = face_locations[0]
|
||||
# 中心点
|
||||
return int((right+left)/2)
|
||||
return 0
|
||||
Reference in New Issue
Block a user