3月9日

研究了一下视频人脸识别结果储存进数据库的问题,我需要这个人物在这个摄像头区域出现过和出现的时间,这些信息记录下来,

但是如果某个目标人物一直出现在摄像头区域的话,就会出现短时间内反复储存的情况,如何避免这个问题呢?

我想到的办法就是每次进行视频人脸识别之后,进行一次判断,假如五分钟内存储过这个ID的人物的记录,将不再重复储存。

import mysql.connector
from mysql.connector import Error
import time


def connect_to_mysql():
    try:
        # 连接到 MySQL 数据库
        conn = mysql.connector.connect(
            host='localhost',
            database='java_test',
            user='root',
            password='123456'
        )

        if conn.is_connected():
            print('Connected to MySQL database')
            return conn

    except Error as e:
        print(e)


def close_connection(conn):
    if conn.is_connected():
        conn.close()
        print('MySQL connection is closed')


def store_face_info(conn, face_id, face_name):
    try:
        cursor = conn.cursor()

        # 检查五分钟内是否已经存储过相同的 face_id
        query = """
            SELECT * FROM face_info
            WHERE face_id = %s AND timestamp > (NOW() - INTERVAL 5 MINUTE)
        """
        cursor.execute(query, (face_id,))
        result = cursor.fetchone()

        if result is None:
            # 如果五分钟内没有存储过相同的 face_id,则进行存储
            insert_query = """
                INSERT INTO face_info (face_id, face_name)
                VALUES (%s, %s)
            """
            cursor.execute(insert_query, (face_id, face_name))
            conn.commit()
            print(f"Stored face_id {face_id} with face_name {face_name}")
        else:
            print(f"Face_id {face_id} has been stored within the last five minutes")

    except Error as e:
        print(e)

if __name__ == "__main__":
    conn = connect_to_mysql()
    store_face_info(conn, "123", "Alice")
    store_face_info(conn, "456", "Bob")
    store_face_info(conn, "123", "Charlie")  # 这个 face_id 在五分钟内已经存储过
    close_connection(conn)

完成了这个思路,但是具体在运用的过程中是否还会有什么问题还不能确定。

posted @ 2024-03-09 20:28  SHINIAN200  阅读(10)  评论(0)    收藏  举报