覆盆子pi

时间:2018-03-13 23:29:35

标签: python raspberry-pi webcam python-multithreading

我正在做一个关于覆盆子pi的机器人项目,其中我需要来自网络摄像头的帧,连接到覆盆子pi,不断让我从videocapture()中提取帧而不是主程序并保存帧中的帧一个队列。问题在于,当我运行程序时,最初的CPU使用率是正常的,即pi的每个核心最大30-40,但是一段时间后,一个核心的CPU使用率达到100%而其他3个核心的使用率低于20%,这会减慢下来的程序。

我搜索了很多,但找不到任何相关的解决方案。我无法理解问题是什么,是线程(python GIL问题)还是其他问题。 任何建议都会有所帮助。

这些是相机模块中正在获取帧并保存在队列中的功能

self.framerate_ms = 1.0/float(20)
def start(self):
    if self.t:
        return

    f = None
    if self.camera_type == USB:
        f = self.update_usb

    self.t = Thread(target=f, args=())
    #self.t.daemon = True
    self.t.start()



def update_usb(self):
    while True:
        if self.stopped:
            return

        (grabbed, frame) = self.camera.read()

        if not grabbed:
            self.stop()
            return

        if self.Q.full():
            self.Q.get()

        self.Q.put(frame)            
        self.ready = True

        #sleep(self.framerate_ms)
抱歉抱怨英语不好我不是母语为英语的人。

0 个答案:

没有答案