Llamar a la cámara de Android, reconocimiento facial real

Listo para trabajar:

  1. Instalar opencv
  2. Registrar la aplicación API de Baidu
  3. Obtenga appid, app_key, secrt_key y obtenga access_token
  4. Descargue el SDK de reconocimiento de imágenes de Baidu o use la llamada a la API

Dividido en dos
ideas centrales:

  1. Use la biblioteca opencv cv2 para llamar a la función de cámara, use ip para conectarse al teléfono móvil y obtenga un marco de imágenes en un bucle.
  2. Un fotograma de la imagen guardada se analiza en un archivo codificado en base64 utilizando base64.b64encode ().
  3. Use la api o sdk de reconocimiento facial de Baidu, después de llamar al resultado del reconocimiento: usar una máscara, masculino y femenino, coordenadas de rasgos faciales, etc.
import cv2
import base64
def capture():
    url = 'rtsp://admin:[email protected]:8554/live'

    cap = cv2.VideoCapture(url)  # 带有摄像头的笔记本用户将url替换为 0 即可

    while(cap.isOpened()):
        ret, frame = cap.read()  # frame为一帧图像,当frame为空时,ret返回false,否则为true
        cv2.imshow('frame',frame)
        # if cv2.waitKey(1) & 0xFF == ord('r'):
        #     cv2.imwrite('C:/Users/Administrator/Desktop/我的照片.jpg', frame)
        #     print('写入成功!')
        if cv2.waitKey(1) & 0xFF == ord('q'):
            cv2.imwrite('C:/Users/Administrator/Desktop/my.jpg', frame)
            print('写入成功!')
            break
    cap.release()  # release the capture
    cv2.destroyAllWindows()



# -------------------------------人脸检测------------------------------------------------
# encoding:utf-8

import requests
def detect():

    '''
    人脸检测与属性分析
    '''

    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"

    params = {
    
    'image':file_64,
              'image_type':'BASE64'
    }
    access_token = '24.b23aafe39fc60508b8c92a9dd38a0571.2592000.1607615861.282335-22960104'
    request_url = request_url + "?access_token=" + access_token
    headers = {
    
    'content-type': 'application/json'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        # print (response.json())
        for i in response.json()['result']['face_list']:
            print(i)
if __name__=='__main__':
    capture()
# -------------------------------图片准备------------------------------------------------
    with open('C:/Users/Administrator/Desktop/my.jpg', 'rb')as file:
        file_64 = base64.b64encode(file.read())
    detect()

Ejecute la representación del código: a
Inserte la descripción de la imagen aquí
través de la tecla Q predeterminada por el código, finalice la captura, escriba en el archivo, luego conviértalo a base64, llame a la api para analizar y devuelva los datos:

写入成功!
{
    
    'face_token': '1f0eb2764eeb9f21c98b2a0d715deb26',
 'location': {
    
    'left': 210.46, 'top': 163.33, 'width': 182, 'height': 183, 'rotation': 0},
  'face_probability': 1,
   'angle': {
    
    'yaw': 0.77, 'pitch': 4.73, 'roll': -1.05}}

Supongo que te gusta

Origin blog.csdn.net/qq_17802895/article/details/109610663
Recomendado
Clasificación