Opencv多线程Python - 目前无法按预期工作

时间:2014-09-21 02:59:45

标签: python multithreading opencv

代码:

def video_stream(self):
    while(True):


        # Our operations on the frame come here

        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        faces = self.face_cascade.detectMultiScale(gray, 1.3, 5)
        while(faces == ()):
            faces = self.face_cascade.detectMultiScale(gray, 1.3, 5)

        if faces is not ():
            if faces[0][0] < 500: # head is on left
                #cmd = """osascript -e 'tell application "System Events" to keystroke "f"'"""
                print "right"
                #.system(cmd)
            else: # head is on right
                #cmd = """osascript -e 'tell application "System Events" to keystroke "d"'"""
                print "left"
                #os.system(cmd)



def main(self):
    t = threading.Thread(target = self.video_stream)
    t.start()

    while not self.done:
        self.event_loop()
        self.update()
        pg.display.update()
        self.clock.tick(self.fps)
        if self.show_fps:
            fps = self.clock.get_fps()
            with_fps = "{} - {:.2f} FPS".format(self.caption, fps)
            pg.display.set_caption(with_fps)

我的问题是Opencv多线程?这段代码并不完整,但它给出了我想要做的事情的图片。

主要功能是运行马里奥游戏。这是程序开始的地方。它启动video_stream的线程,该线程运行简单的人脸检测算法。如果面部存在,则存在设置的硬编码阈值(500),其大致确定面部相对于相机的位置。理想情况下,我们会触发由Mario游戏捕获的键盘事件(通过AppleScript)。然后通过脸部位置左右控制马里奥游戏。

问题是,代码运行速度极慢。独立地,两个功能都运行得非常顺利。但是,当连接在一起时,它运行得非常慢。 video_stream函数错过了很多面部检测。

0 个答案:

没有答案