【发布时间】:2018-03-13 06:22:52
【问题描述】:
此代码按预期运行,并给出预期输出
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"
if True:
p = multiprocessing.Process(name='test',
target=cvtcolor,
kwargs={'img':image}
)
p.start()
p2 = multiprocessing.Process(name='test',
target=cvtcolor,
kwargs={'img':image}
)
p2.start()
输出:
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 ...
我使用的是 OpenCV 3.2.0 版,详细安装在 Raspbian Jessie (raspberry pi) 上的 here
有人对此有解释/解决方案吗?
【问题讨论】:
-
最后添加
p.join()有帮助吗?抱歉,我对 Python 知之甚少。 -
不,它没有帮助,我需要它在后台运行
标签: opencv raspberry-pi multiprocessing