在后台连续运行python面部记录脚本

在后台连续运行python面部记录脚本,python,Python,我创建了一个python脚本来识别我的脸,如果它识别出一个intuder,它将锁定工作站,如果我的脸被识别,一切都很好。我遇到的主要问题是每次代码运行时都需要重新运行脚本。所以基本上我想让它在我的电脑上持续运行,即使我没有坐下,甚至屏幕被锁定(屏保)。 因为我只想在本地计算机上使用它,所以在服务器上使用它是没有意义的 实现这一点的最佳方式是什么 我在网上找到的大多数帖子和帖子都只说,而实际上是:,但这对我来说并没有任何帮助。因为我不知道脚本是否会工作,即使屏幕关闭。我已经知道如何使用无限循环 v

我创建了一个python脚本来识别我的脸,如果它识别出一个intuder,它将锁定工作站,如果我的脸被识别,一切都很好。我遇到的主要问题是每次代码运行时都需要重新运行脚本。所以基本上我想让它在我的电脑上持续运行,即使我没有坐下,甚至屏幕被锁定(屏保)。 因为我只想在本地计算机上使用它,所以在服务器上使用它是没有意义的

实现这一点的最佳方式是什么

我在网上找到的大多数帖子和帖子都只说
,而实际上是:
,但这对我来说并没有任何帮助。因为我不知道脚本是否会工作,即使屏幕关闭。我已经知道如何使用无限循环

videoCamera = cv.VideoCapture(0)

countRight = 0
countWrong = 0

timeNow = datetime.datetime.now()
timeNow = timeNow.second

while(True):

    timeNowAux = datetime.datetime.now()
    timeNowAux = timeNowAux.second
    if(timeNowAux > timeNow + 8):
        videoCamera.release()
        cv.destroyAllWindows()
        ctypes.windll.user32.LockWorkStation()
        sys.exit()

    ret, image = videoCamera.read()
    imageGray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

    faces = FaceDetector.detectMultiScale(imageGray, 1.3, 5)

    for(x, y, width, height) in faces:

        cv.rectangle(image, (x-20, y-20), (x+width+20, y+height+20), (0,0,0), 4)
        Id, confidence = FaceRecognizer.predict(imageGray[y:y+height, x:x+width])

        if(confidence>80):
            print("Intruder! " + str(countWrong))
            cv.rectangle(image, (x-20, y-20), (x+width+20, y+height+20), (0,0,255), 4)
            cv.putText(image, "Intruder!", (x,y-40), cv.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,255), 2)
            countWrong += 1
        else:
            print("Verified user. " + str(countRight))
            cv.rectangle(image, (x-20, y-20), (x+width+20, y+height+20), (0,255,0), 4)
            cv.putText(image, "Verified user. ID: " + str(Id), (x,y-40), cv.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,255,0), 2)
            countRight += 1

        # LOCK IF INTRUDER #
        if(countWrong == 5):
            print("LOCKING WORKSTATION!")
            videoCamera.release()
            cv.destroyAllWindows()
            ctypes.windll.user32.LockWorkStation()
            sys.exit()
        if(countRight == 10):
            print("Welcome!")
            videoCamera.release()
            cv.destroyAllWindows()
            sys.exit()

    cv.imshow("Webcam", image)

    if cv.waitKey(100) & 0xFF == 27:
        break

videoCamera.release()
cv.destroyAllWindows()
这是代码供参考。我已经检查了所有检测到的面,我唯一能做的就是删除sys.exit()部分并保持它这样运行

编辑:::我创建了一个批处理文件,它将在每次解锁电脑时运行脚本。我得到了这个错误


“因为即使屏幕关闭,我也不知道脚本是否有效。”。。你试过了吗?您需要定义一些检查所需的条件。如每循环检查是否有一个面。如果没有面,则锁定系统。如果有人脸,则检查是否有正确的人。在这样的条件下,它应该一直有效。您可能还应该添加一个时间延迟。单独运行一段时间的代码可能会对cpu造成很大的负担。所有这些都表明,如果没有代码示例进行测试和审查,我们无法真正为您提供太多帮助。@Mike SMT不,它不起作用。如果我删除sys.exit()部分,并且它到达代码中锁定工作站的部分,则代码会给出一个错误。