def align_face(self,opic,faceKeyPoint):
        img = cv2.imread(opic)
        faceKeyPoint = faceKeyPoint[0]

        #根据两个鼻子和眼睛进行3点对齐
        eye1 = faceKeyPoint[0]
        eye2 = faceKeyPoint[1]
        noise = faceKeyPoint[2]
        source_point = np.array(
            [eye1, eye2, noise], dtype=np.float32
        )

        eye1_noraml= [int(x) for x in face_comm.get_conf('alignment','left_eye').split(',')]
        eye2_noraml=[int(x) for x in face_comm.get_conf('alignment','right_eye').split(',')]
        noise_normal=[int(x) for x in face_comm.get_conf('alignment','noise').split(',')]
        #设置的人脸标准模型

        dst_point = np.array(
            [eye1_noraml,
             eye2_noraml,
             noise_normal],
            dtype=np.float32)

        tranform = cv2.getAffineTransform(source_point, dst_point)

        imagesize=tuple([int(x) for x in face_comm.get_conf('alignment','imgsize').split(',')])
        img_new = cv2.warpAffine(img, tranform, imagesize)
        new_image= os.path.abspath(face_comm.get_conf('alignment','aligment_face_dir'))
        new_image= new_image+'/'+'%d_%d.png'%(time.time(),random.randint(0,100))
        if cv2.imwrite(new_image, img_new):
            return new_image
        return None
    def __init__(self):
        self.f                = int(face_comm.get_conf('annoy','face_vector'))
        self.annoy_index_path = os.path.abspath(face_comm.get_conf('annoy','index_path'))
        self.lmdb_file        =os.path.abspath(face_comm.get_conf('lmdb','lmdb_path'))
        self.num_trees        =int(face_comm.get_conf('annoy','num_trees'))

        self.annoy = AnnoyIndex(self.f)
        if os.path.isfile(self.annoy_index_path):
            self.annoy.load(self.annoy_index_path)
Exemple #3
0
 def add_embed_to_lmdb(self,id,vector):
     self.db_file=os.path.abspath(face_comm.get_conf('lmdb','lmdb_path'))
     id = str(id)
     evn = lmdb.open(self.db_file);
     wfp = evn.begin(write=True)
     wfp.put(key=id, value=face_comm.embed_to_str(vector))
     wfp.commit()
     evn.close()    
Exemple #4
0
 def add_embed_to_lmdb(self, id, vector):
     self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path'))
     id = str(id)
     evn = lmdb.open(self.db_file)
     wfp = evn.begin(write=True)
     print(vector.dtype)
     wfp.put(key=id.encode(), value=vector.tostring())
     wfp.commit()
     evn.close()
    def load_index_from_lmdb(self, id_list, name_list):
        # 遍历
        self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path'))
        if os.path.isdir(self.db_file):
            evn = lmdb.open(self.db_file)
            wfp = evn.begin()

            for key, value in wfp.cursor():
                str_list = key.split(',')
                id_list.append(str_list[0])
                name_list.append(str_list[1])
Exemple #6
0
import cv2
import numpy as np
import tensorflow as tf
from scipy import misc

import face_net.src.facenet as facenet
import face_net.src.align.detect_face

import face_comm

import time

np.set_printoptions(suppress=True)
gpu_memory_fraction = 0.3
facenet_model_checkpoint = os.path.abspath(
    face_comm.get_conf('facedetect', 'model'))


class Encoder:
    def __init__(self):
        self.dectection = Detection()
        self.sess = tf.Session()
        start = time.time()
        with self.sess.as_default():
            facenet.load_model(facenet_model_checkpoint)
        print('Model loading finised,cost: %ds' % ((time.time() - start)))

    def generate_embedding(self, image):
        # Get input and output tensors
        images_placeholder = self.sess.graph.get_tensor_by_name("input:0")
        embeddings = self.sess.graph.get_tensor_by_name("embeddings:0")
# coding: utf-8
import mxnet as mx
from mtcnn.mtcnn_detector import MtcnnDetector
import cv2
import os
import time

import numpy as np
import face_comm

model = os.path.abspath(face_comm.get_conf('mtcnn', 'model'))


class Detect:
    def __init__(self):
        self.detector = MtcnnDetector(model_folder=model,
                                      ctx=mx.cpu(0),
                                      num_worker=4,
                                      accurate_landmark=False)

    def detect_face(self, image):
        img = cv2.imread(image)
        results = self.detector.detect_face(img)
        boxes = []
        key_points = []
        if results is not None:
            #box框
            boxes = results[0]
            #人脸5个关键点
            points = results[1]
            for i in results[0]:
Exemple #8
0
 def query_vector(self, face_vector):
     n = int(face_comm.get_conf('annoy', 'num_nn_nearst'))
     return self.annoy.get_nns_by_vector(face_vector,
                                         n,
                                         include_distances=True)
 def show_lmdb(self):
     self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path'))
     evn = lmdb.open(self.db_file)
     wfp = evn.begin()
import cv2
import numpy as np
import tensorflow as tf
from scipy import misc

import face_net.src.facenet as facenet
import face_net.src.align.detect_face

import  face_comm

import time

np.set_printoptions(suppress=True)
gpu_memory_fraction = 0.3
facenet_model_checkpoint = os.path.abspath(face_comm.get_conf('facedetect','model'))

class Encoder:
    def __init__(self):
        self.dectection= Detection()
        self.sess = tf.Session()
        start=time.time()
        with self.sess.as_default():
            facenet.load_model(facenet_model_checkpoint)
        print 'Model loading finised,cost: %ds'%((time.time()-start))

    def generate_embedding(self, image):
        # Get input and output tensors
        images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
        embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
        phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")