def exactor(self, one): faces = one[1].split(';') face_dir = one[-1] for face in faces: all_finished = True if face: face_path = face_dir + one[2] + '/' + face cmd = "../cmodel/featurebr/build/feature %s %s " % ( "FaceRecognition", face_path) print cmd res = exeCmd(cmd) data = res.strip(',').split(',') ldata = len(data) if ldata != self.conf['item_len']: print "len of data error: %d" % ldata all_finished = False continue data = self.indexData(data) data['hash_id'] = one[0] data['path'] = face_path data['uri'] = one[3] res = self.es.index(index="face", doc_type="feature", body=data) if all_finished: db = Mysql(self.conf["db_host"], self.conf["db_database"], self.conf["db_user"], self.conf["db_pass"]) sql = "update images set status = '4' where `md5` = '%s' " % one[ 0] db.execute(sql) db.close() return
def finishPic(self, pic): # opencv face_cascade = cv2.CascadeClassifier(self.conf["cascade"]) imgpath = self.conf['img_path'] + pic[0] + '/' + pic[1] img = cv2.imread(imgpath) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.5, 7) i = 0 faces_str = "" for (x,y,w,h) in faces: faces_str += pic[1] + ".face_"+str(i)+".jpg;" face_path = pic[3] + pic[1] + ".face_"+str(i)+".jpg" tmpimg = cv.LoadImage(imgpath) cv.SetImageROI(tmpimg, (x, y, w, int(h*1.15))) cv.SaveImage(face_path,tmpimg) print face_path i += 1 db = Mysql(self.conf["db_host"], self.conf["db_database"], self.conf["db_user"], self.conf["db_pass"]) sql = "update images set status='3', face_dir='%s' where `md5`='%s'" % (faces_str, pic[2]) db.execute(sql) db.close() return
class MainDev(SDevice): _logger = None _main_proc = None _mail_procs = None _work_procs = None _db = None instance = None mutex = threading.Lock() def __init__(self): super(MainDev, self).__init__() self._logger = logging.getLogger(str(__name__)) interval = SysConfig.config["servers"]["interval"] if not interval: interval = 200 self._main_proc = MainProc(self) self.addProcess(self._main_proc, interval) mailProcCount = SysConfig.config["mail"]["mailProcCount"] self._mail_procs = [] for i in range(mailProcCount): mailProc = MailProc(self) mailProc.setIndex(i) self._mail_procs.append(mailProc) self.addProcess(mailProc, interval) self._work_procs = [] workProcCount = SysConfig.config['servers']['workProcCount'] for i in range(workProcCount): workProc = WorkProc(self) self._work_procs.append(workProc) self.addProcess(workProc, interval) host = SysConfig.config['db']['host'] port = SysConfig.config['db']['port'] user = SysConfig.config['db']['user'] passwd = SysConfig.config['db']['passwd'] dbName = SysConfig.config['db']['db'] charset = SysConfig.config['db']['charset'] self._db = Mysql(host, port, user, passwd, dbName, charset) pass @staticmethod def GetInstance(): if(MainDev.instance == None): MainDev.mutex.acquire() if(MainDev.instance == None): MainDev.instance = MainDev() MainDev.mutex.release() return MainDev.instance pass def getMainProc(self): return self._main_proc pass def getRedis(self): return self._redis pass def start(self): super(MainDev, self).start() row = self._db.query("select num_iid from ftxia_items order by id desc") for r in row: AppQueue.numiidQueue.put(r[0]) self._logger.debug("numiid count %d"%(AppQueue.numiidQueue.qsize())) self._logger.debug("server start ........") def close(self): self._logger.debug("server close ........") super(MainDev,self).close() self._db.close() def getDb(self): return self._db def getFactory(self): return self._factory pass