def ReconhecerEinger(): detectorFace = cv2.CascadeClassifier("haarcascade_frontalface_default.xml") reconhecedor = cv2.face.EigenFaceRecognizer_create() reconhecedor.read("classificadorEingen.yml") largura,altura=util.getDimensao() fonte = cv2.FONT_HERSHEY_COMPLEX_SMALL camera = util.Camera() while (True): conectado,imagem=camera.read() imagemCinza = cv2.cvtColor(imagem,cv2.COLOR_BGR2GRAY) facesDetectadas= detectorFace.detectMultiScale(imagemCinza,scaleFactor=1.5,minSize=(30,30)) for (x,y,l,a) in facesDetectadas: imagemFace = cv2.resize(imagemCinza[y:y+a,x:x+l], (largura,altura)) cv2.rectangle(imagem,(x,y),(x+l,y+a),(0,0,255),2) id,confianca =reconhecedor.predict(imagemFace) nome= util.getNome(id) cv2.putText(imagem,nome,(x,y+(a+30)),fonte,2,(0,0,255)) cv2.putText(imagem,str(confianca),(x,y+(a+50)),fonte,2,(0,0,255)) cv2.imshow("Face",imagem) if cv2.waitKey(1)== ord("q"): break camera.release() cv2.destroyAllWindows()
def Capturar(self, numeroAmostra): # codigo que irá compor o nome da imagem e servirá para identificar a pessoa. amostra = 1 # obs.: na classe util deixei fixo o nome da pessoa, e futuramente irei cadastrar no banco de dados id = util.getProximoId() nome = input("Informe o nome " + str(id)+": ") util.setNome(nome) largura, altura = util.getDimensao() print("Capturando as faces..") # instancia o uso da webcam, na classe util será determinado qual camera será usada webcam = util.Camera() while True: # pega efetivamente a imagem da webcam s, imagem = webcam.read() imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY) # facesDetectadas=classificador.detectMultiScale(imagemCinza, # scaleFactor=1.5, # minSize=(150,150)) facesDetectadas = self.classificador.detectMultiScale(imagem) # Desenha um retângulo nas faces detectadas for (x, y, l, a) in facesDetectadas: cv2.rectangle(imagem, (x, y), (x+l, y+a), (0, 255, 0), 2) regiao = imagem[y:y+a, x:x+l] regiaoCinzaOlho = cv2.cvtColor(regiao, cv2.COLOR_BGR2GRAY) olhosDetectados = self.classificadorOlho.detectMultiScale( regiaoCinzaOlho) # Desenha um retângulo nos olhos detectados for (ox, oy, ol, oa) in olhosDetectados: cv2.rectangle(regiao, (ox, oy),(ox+ol, oy+oa), (0, 0, 255), 2) # if np.average(imagemCinza) > 70: #indice de luminozidade if cv2.waitKey(1) & 0xFF == ord('q'): imageFace = cv2.resize(imagemCinza[y:y+a, x:x+l], (largura, altura)) cv2.imwrite("fotos/pessoa."+str(id) + "."+str(amostra)+".jpg", imageFace) print("[foto "+str(amostra) + " capturada com sucesso]") amostra += 1 cv2.imshow('Video', imagem) # mostra a imagem captura na janela cv2.waitKey(1) if(amostra >= numeroAmostra+1): break webcam.release() # dispensa o uso da webcam cv2.destroyAllWindows() # fecha todas a janelas abertas
cv2.imwrite(filename, image) cv2.namedWindow('Image', cv2.WINDOW_NORMAL) cv2.imshow("Image", image) cv2.waitKey(10) my_stepper.step_forward(frame_step) else: # print("Frame {} found not in position at{}:{}".format(my_loop, sy_center,sx_cent)) tot_s = tot_s + search_step my_stepper.step_forward(search_step) print("Finished") cv2.namedWindow('Image', cv2.WINDOW_NORMAL) cv2.imshow("Image", image) avg_s_frame = tot_s / nr print("Avg step frame: {}".format(avg_s_frame)) return avg_s_frame my_stepper = util.Stepper() my_camera = util.Camera() parser = argparse.ArgumentParser() parser.add_argument("--capture", type=int, help="Number of frames to Capture") parser.add_argument("jobname", help="Name of job(folder/filenames") args = parser.parse_args() if args.capture: print("Capture {} frames".format(args.capture)) capture(args.capture, args.jobname) my_stepper.cleanup()
See https://en.wikipedia.org/wiki/Histogram_equalization. ''' image1 = np.copy(image) image1 = cv2.cvtColor(image1, cv2.COLOR_RGB2HSV) image1[:, :, 2] = cv2.equalizeHist(image1[:, :, 2]) #image1 = cv2.cvtColor(image1, cv2.COLOR_HSV2RGB) image1 = cv2.cvtColor(image1, cv2.COLOR_HSV2BGR) return image1 webcam = util.Camera() while True: # pega efetivamente a imagem da webcam s, imagem = webcam.read() #imagem = histogram_eq(imagem) original = np.copy(imagem) imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY) #eq = histogram_eq(imagem) facesDetectadas = classificador.detectMultiScale(imagem) for (x, y, l, a) in facesDetectadas: cv2.rectangle(imagem, (x, y), (x + l, y + a), (0, 255, 0), 2) regiao = imagem[y:y + a, x:x + l] regiaoCinzaOlho = cv2.cvtColor(regiao, cv2.COLOR_BGR2GRAY)