是在两个代码的基础上改的:
做了什么改动:
用了代码(1)的主体代码。
用了(2)检测关键点的代码:因为(1)是68个关键点,(2)是79个关键点且包括额头,满足我的需要
代码功能:代码能扣取人脸,并去掉眼睛
emmmmm 代码改的有点乱,但能运行,主函数在最下面,把initPath和DesPath和DesPath1的路径改了就行了。
结果大概是这样:
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 12 12:36:11 2017
@author: Quantum Liu
"""
import sys, os, traceback
import cv2
import dlib
import numpy as np
class NoFace(Exception):
'''
??
'''
pass
class Organ():
def __init__(self, im_bgr, im_hsv, temp_bgr, temp_hsv, landmark, name, ksize=None):
'''
?????
arguments:
im_bgr:uint8 array, inference of BGR image
im_hsv:uint8 array, inference of HSV image
temp_bgr/hsv:global temp image
landmark:array(x,2), landmarks
name:string
'''
self.im_bgr, self.im_hsv, self.landmark, self.name = im_bgr, im_hsv, landmark, name
self.get_rect()
self.shape = (int(self.bottom - self.top), int(self.right - self.left))
self.size = self.shape[0] * self.shape[1] * 3
self.move = int(np.sqrt(self.size / 3) / 20)
self.ksize = self.get_ksize()
self.patch_bgr, self.patch_hsv = self.get_patch(self.im_bgr), self.get_patch(self.im_hsv)
self.set_temp(temp_bgr, temp_hsv)
self.patch_mask = self.get_mask_re()
pass
def set_temp(self, temp_bgr, temp_hsv):
self.im_bgr_temp, self.im_hsv_temp = temp_bgr, temp_hsv
self.patch_bgr_temp, self.patch_hsv_temp = self.get_patch(self.im_bgr_temp), self.get_patch(self.im_hsv_temp)
def confirm(self):
'''
????
'''
self.im_bgr[:], self.im_hsv[:] = self.im_bgr_temp[:], self.im_hsv_temp[:]