在Raspberry Pi上使用多处理时,OpenCV会挂起

时间:2017-08-24 20:39:53

标签: opencv raspberry-pi multiprocessing

此代码按预期运行,并提供预期输出

converting to gray ...
converting to gray ...
converted to gray
converted to gray

输出:

import multiprocessing
import cv2
import os

path = r"/home/pi/Desktop/calibration.jpg"
image = cv2.imread(path)

def cvtcolor(img):
    print "converting to gray ..."
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    print "converted to gray"


cvtcolor(image)

if True:
    p = multiprocessing.Process(name='test',
                          target=cvtcolor,
                          kwargs={'img':image}
                                      )
    p.start()

但是,此代码在执行时会挂起

converting to gray ...
converted to gray
converting to gray ...

在主进程中执行的功能继续进行,但是在" test"中执行的功能进程永远挂起

font-family:'Arial',sans-serif;

我正在使用OpenCV版本3.2.0,在Raspbian Jessie(raspberry pi)上安装详细here

有没有人对此有解释/解决方案?

1 个答案:

答案 0 :(得分:-1)

查看返回的内容。如果直接尝试BGR2GRAY,您将得到一个数组,其形状属性与输入图像相同,但只有1种颜色,例如灰色。使用多处理运行相同的函数时,不会返回返回的数组。它没有shape属性,尝试打印输出以查看它的形式,然后可以从中重建图像。