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)
完成了这个思路,但是具体在运用的过程中是否还会有什么问题还不能确定。

浙公网安备 33010602011771号