Python人脸识别源码:如何在python中进行背景人脸识别

所以,我想创建一个结构,其中人脸识别将在后台线程上完成,并且流将通过正在进行的前台线程显示。

我仍然不明白为什么我的电脑以 20fps 而不是 30fps 显示流。

更新了代码(添加了 perf_counter 并添加了用户定义的函数)

请参阅的链接旧代码。

Old py code
import cv2
from simple_facerec import SimpleFacerec
from datetime import datetime
from time import perf_counter
prev = 0
count = 0
vid_cod = ""
cap = ""
path =""
vid_name = ""
output = ""
sfr = ""
def vidCapture():
    global cap,prev,count,sfr
    while (cap.isOpened()):
        ret, frame = cap.read()
        
        # Detect Faces
        startDetect = perf_counter()
        face_locations, face_names = sfr.detect_known_faces(frame)
        for face_loc, name in zip(face_locations, face_names):
            y1, x2, y2, x1 = face_loc[0], face_loc[1], face_loc[2], face_loc[3]
            #if the face is recognised then 
            if name != "Unknown" :
                print("known Person detected :) => " + name)
                stopDetect = perf_counter()
                print(f"Time taken to identify face : {stopDetect-startDetect}")
            #else if the face is unknown then 
            else :
                stopDetect = perf_counter()
                print(f"Time taken to identify face : {stopDetect-startDetect}")
                print("Unknown Person detected :( => Frame captured...")
        #show the frames on the display
        cv2.imshow("Frame", frame)
        #write frames to output object so it can save the video
        output.write(frame)
        #to terminate the process press "x"
        if cv2.waitKey(1) & 0XFF == ord('x'):
            break
    cap.release()
    output.release()
    cv2.destroyAllWindows()
def __init__():
    global prev,count,vid_cod,vid_name,cap,path,output,sfr
    startSfr = perf_counter()
    # Encode faces from a folder
    sfr = SimpleFacerec()
    sfr.load_encoding_images("images/")
    stopSfr = perf_counter()
    loadSfr = stopSfr-startSfr
    print(f"Time taken to load sfr : {loadSfr}")
    startCam = perf_counter()
    # Load Camera
    cap = cv2.VideoCapture('https://192...:8080/videofeed')
    #cap = cv2.VideoCapture(0)
    stopCam = perf_counter()
    loadCam = stopCam-startCam
    print(f"Time taken to load cam : {loadCam}")
    startCodec = perf_counter()
    #Use MPEG video codec
    vid_cod = cv2.VideoWriter_fourcc(*'MPEG')
    stopCodec = perf_counter()
    loadCodec = stopCodec-startCodec
    print(f"Time taken to load codec : {loadCodec}")
    startInit = perf_counter()
    prev = 0
    count = 0
    #defining the path where video will be saved
    path = 'C:/Users/Username/Documents/Recorded/'
    #Encode video name with date and time
    vid_name = str("recording_"+datetime.now().strftime("%b-%d-%Y_%H:%M").replace(":","_")+".avi")
    #initialize video saving process as a "output" object
    output = cv2.VideoWriter( str(path+vid_name) , vid_cod, 20.0 ,(640,480))
    stopInit = perf_counter()
    loadInit = stopInit - startInit
    print(f"Time taken to load rest : {loadInit}")
    vidCapture()
__init__()

的文件是在上面的代码中导入的 simplefacerec。

simple_facerec.py Note:

当我将output中的 fps 从 20 更改为 25 时,保存的视频长度会减少,当我将 fps 从 20 更改为 15 时,视频长度会增加。

在放入perf_counter()后,我发现单独的人脸识别大约需要 0.5 秒。整个代码运行了大约 7 到 8 秒,其中只显示了 5 帧。

Time taken to load sfr : 2.3252885000001697
Time taken to load cam : 0.3193597999998019
Time taken to load codec : 1.3199998647905886e-05
Time taken to load rest : 0.0018557999974291306
known Person detected :) => Anirudhdhsinh Jadeja
Time taken to identify face : 0.4715902999996615
known Person detected :) => Anirudhdhsinh Jadeja
Time taken to identify face : 0.5326913999997487
known Person detected :) => Anirudhdhsinh Jadeja
Time taken to identify face : 0.4969602000019222
known Person detected :) => Anirudhdhsinh Jadeja
Time taken to identify face : 0.4868558000016492
known Person detected :) => Anirudhdhsinh Jadeja
Time taken to identify face : 0.4679383000002417

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(350)
用户注册表html代码:读取注册表的 Python代码
上一篇
电脑c盘满怎么办:串行键:该怎么办(serialkeys)
下一篇

相关推荐

  • python精度:如何利用Python来提高精度

    Python精度是指Python程序在数值计算时所能提供的最大精度。它取决于Python程序使用的数字类型,以及Python解释器的精度。…

    2023-04-01 04:27:43
    0 65 74
  • python界面开发构建一个简单、可靠的用户界面

    Python界面开发是指使用Python语言来创建图形用户界面(GUI)的过程。它可以帮助你创建可视化的应用程序,使用户能够与你的程序交互。…

    2023-03-18 10:39:36
    0 81 89
  • python 软件测试深入了解如何确保质量

    Python软件测试是一种使用Python编写的自动化测试,它可以帮助开发人员进行软件测试。Python软件测试主要涉及到三个方面:单元测试、集成测试和系统测试。…

    2023-08-14 11:34:51
    0 74 51
  • pythonlist切片:利用Python列表切片获取最大价值

    示例示例Python列表切片是指从列表中提取特定范围的元素,而不需要遍历整个列表。 列表切片使用方括号[]和冒号:来表示,其形式如下:list[start:end:step]…

    2023-07-31 01:45:29
    0 97 79
  • python imread函数一步搞定!

    Python imread函数是用于从图像文件读取图像数据的函数,它是由Scipy库提供的。它可以从多种格式的图像文件中读取图像数据,包括JPEG、PNG、TIFF、GIF等。…

    2023-05-26 15:06:44
    0 48 48
  • python 创建列表:使用Python创建一个强大的列表

    示例示例Python创建列表的方法有多种,下面介绍其中几种常用的方法。使用 [] 创建空列表…

    2023-03-03 12:56:32
    0 64 71
  • pythonweb服务器:如何使用Python搭建Web服务器

    Python Web服务器是一种使用Python语言编写的Web服务器,它可以接受HTTP请求并返回相应的响应。Python Web服务器可以处理动态内容,比如数据库查询,文件上传,CGI脚本等。…

    2023-01-24 10:13:27
    0 27 47
  • python窗口代码从入门到精通

    Python窗口代码是使用Python语言创建GUI(图形用户界面)应用程序的一种方式。它使用Python的tkinter模块,可以快速创建简单的窗口,并使用其中的控件进行交互。下面是一个简单的窗口示例:…

    2023-07-04 11:48:45
    0 50 10

发表评论

登录 后才能评论

评论列表(79条)