多处理和图像采集

时间:2018-05-04 10:37:31

标签: python opencv multiprocessing

上个月我编写的代码利用线程从树莓摄像机获取图像。线程似乎工作得很好,因为它允许快速获取,但扩展代码以接收队列一直是一个挑战。在寻求帮助的同时,我遇到了这个thread,其中概述了线程的优缺点。看起来虽然线程有效,但它有其局限性。这导致我post突出显示如何使用多处理和opencv捕获以及一些github code突出显示多处理是覆盆子pi上图像采集的最佳方法。

问题是许多可用的代码示例似乎对我不起作用。这是我试图使用的一个例子。我使用spyder进行编程,当在ipython控制台中运行时,此代码不会显示任何内容。

import cv2
import multiprocessing as mp

def camera1():
    global cap1
    cap1 = cv2.VideoCapture(0)    
    while True:
        _, frame1 = cap1.read()
        cv2.imshow('frame1', frame1)

        k = cv2.waitKey(5)
        if k == 27:
            break
    cap1.release()


def cap_images():
    _, img1 = cap1.read()
    cv2.imwrite("Image1.png", img1)


if __name__ == '__main__':
    p1 = mp.Process(target=camera1)
    p1.start()

尝试通过控制台运行代码会导致此错误

'multiprocessing' has no attribute 'Process'

接收此错误很奇怪,因为当我导入多处理并执行命令时,Process就是其中之一。

多处理如何工作的一个很好的例子是什么?我应该坚持使用多线程(考虑到我在树莓派上运行它,一个优点是内存占用少)

0 个答案:

没有答案