模块化裁剪

This commit is contained in:
hejianjun
2022-01-30 22:26:52 +08:00
parent a84452ba1c
commit e1b5d17b05
5 changed files with 53 additions and 50 deletions

View 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
View File

@@ -0,0 +1,4 @@
import hog
def face_center(filename, model):
return hog.face_center(filename, model)

10
ImageProcessing/hog.py Normal file
View 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