Python3 Opencv3 Multiprocessing raise System E

2024-10-03 13:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用OpenCV3和Python3.4。我的机器是一台MacBookPro操作系统10.10(约塞米蒂),我在使用OpenCV的一些函数和多处理库时遇到了一些问题。下面是一个(非常)简化的示例代码,它再现了错误:

import multiprocessing
import numpy
import cv2


class Sample():
    def __init__(self):
        self.mask = []  # Testing

    def experiment(self):

        img = cv2.imread("/Users/luigolas/PycharmProjects/PyReid/tests/test_resources/P2/cam1/P2_001_cam1_1.png")
        self.mask.append(segment(img))
        print("Segmented!")
        processes = [multiprocessing.Process(target=self._func) for i in range(3)]
        _ = [p.start() for p in processes]
        _ = [p.join() for p in processes]

    def _func(self):
        img = cv2.imread("/Users/luigolas/PycharmProjects/PyReid/tests/test_resources/P2/cam2/P2_001_cam2_1.png")
        cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        print("Done!!")


def segment(image):
    bgdmodel = numpy.zeros((1, 65), numpy.float64)
    fgdmodel = numpy.zeros((1, 65), numpy.float64)
    mask_source = "/Users/luigolas/PycharmProjects/PyReid/resources/masks/OptimalMask.txt"
    mask = numpy.loadtxt(mask_source, numpy.uint8)
    cv2.grabCut(image, mask, None, bgdmodel, fgdmodel, 2, cv2.GC_INIT_WITH_MASK)

    mask = numpy.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')

    return mask


if __name__ == '__main__':
    t = Sample()
    t.experiment()

问题是,它永远不会达到“完成”打印,当它断开时显示一条OS X错误消息。完整的错误消息位于GIST

我已经坚持了一段时间了,还没有找到这个错误的确切原因。如果我不运行“cvtcolor”命令,就没有任何问题。如果“grabcut”命令没有运行。。。在

u日期: 在_func方法中,如果我添加一个print或create一个文件作为第一条指令,它将被打印并创建,这意味着进程已启动。 当执行GRAPCUT(段内函数)和cvtcolor时,问题出现。如果其中一个没有执行,就没有任何问题。怎么会有关系呢?在

我还尝试使用multiprocessing.dummy.Process并成功了。 可能是OpenCV的问题?在


Tags: importselfnumpyimgdef错误maskmultiprocessing
1条回答
网友
1楼 · 发布于 2024-10-03 13:17:15

我终于解决了。这是OpenCV的编译和安装问题。不能真正判断出什么问题,但我检查了homebrew如何配置OpenCV并对其进行了调整(添加了python3支持)。在

谢谢你的帮助。在

相关问题 更多 >