使用opencv来检测人脸并同时播放音乐

问题描述 投票:0回答:1

我编写了一个程序,当检测到脸部时会发出警告声(播放音频文件)但是,声音文件将始终触发检测条件后,在10〜30秒后开始播放。如果将其从条件句中删除并作为背景音乐播放没有这个问题。请问如何解决?谢谢!我用来播放声音的代码:winsound.PlaySound('1.wav', winsound.SND_FILENAME|winsound.SND_ASYNC)完整代码:

# -*- coding: utf-8 -*-
import dlib
import cv2
import imutils
import winsound
import os
import multiprocessing
import winsound 
import time
from winsound import SND_ASYNC 
import pygame
from pygame import mixer

#chose camera

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
#change size
cap.set(cv2. CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2. CAP_PROP_FRAME_HEIGHT, 360)

#取得預設的臉部偵測器
detector = dlib.get_frontal_face_detector()
#根據shape_predictor方法載入68個特徵點模型,此方法為人臉表情識別的偵測器
predictor = dlib.shape_predictor( 'shape_predictor_68_face_landmarks.dat')
#當攝影機打開時,對每個frame進行偵測
#pygame.mixer.init()
#mixer.music.load('incoming.mp3')
#mixer.music.play(-1)
#winsound.PlaySound('incoming.wav', winsound.SND_FILENAME| winsound.SND_ASYNC  )
while(cap.isOpened()):
    #讀出frame資訊
    ret, frame = cap.read()

    #偵測人臉
    face_rects, scores, idx = detector.run(frame, 0)

    #取出偵測的結果
    for i, d in enumerate(face_rects):
      x1 = d.left()
      y1 = d.top()
      x2 = d.right()
      y2 = d.bottom()
      text = " %2.2f ( %d )" % (scores[i], idx[i])

      #繪製出偵測人臉的矩形範圍
      cv2.rectangle(frame, (x1, y1), (x2, y2), ( 0, 255, 0), 4, cv2. LINE_AA)

      #標上人臉偵測分數與人臉方向子偵測器編號
      cv2.putText(frame, text, (x1, y1), cv2. FONT_HERSHEY_DUPLEX,
      0.7, ( 255, 255, 255), 1, cv2. LINE_AA)

      #play sound

      if scores[i]>0.3 and  idx[i]==0 :
        print(text)

        #pygame.mixer.pre_init(48000, 16, 2, 4096)
        winsound.PlaySound('incoming.wav', winsound.SND_FILENAME| winsound.SND_ASYNC  )


    #輸出到畫面
    cv2.imshow( "Face Detection", frame)

    #如果按下ESC键,就退出
    if cv2.waitKey( 10) == 27:
       break

#釋放記憶體
cap.release()
#關閉所有視窗
cv2.destroyAllWindows()

和gprof2dot here

python opencv face-recognition winsound
1个回答
0
投票

您需要了解如何解决您的任务。

也许您需要使用多线程,因为它非常适合I / O绑定的应用程序。

看看this article

© www.soinside.com 2019 - 2024. All rights reserved.