OpenCV 3.2挂起在cv2.cvtColor上

时间:2017-01-30 18:57:34

标签: python-2.7 opencv mod-wsgi wsgi opencv3.1

我有一组Web API,我在Apache上使用WSGI进行图像处理。 最近我将OpenCV升级到3.2(我使用Python 2.7) 当我从控制台运行它时,OpenCV似乎运行正常,但是当我进行Web API调用时,openCV会在将图像转换为灰度时挂起:

cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

它完全随意,无法找到模式。有时它会挂起,有时它适用于同一图像。 有什么想法吗?

更多信息: 当我从shell命令执行它时,一切正常:

>>> sudo python manage.py shell
>>> import cv2
>>> import numpy as np
>>> from PIL import Image
>>> image = Image.open(img_path)
>>> image = np.asarray(image)
>>> print image
    array([[[255, 255, 255],
            [255, 255, 255],
            [255, 255, 255],...]]], dtype=uint8)
>>> img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
>>> print img
    array([[255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       ..., 
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255]], dtype=uint8)

更新: 问题出在WSGI上。当我在WSGIDaemonProcess的apache配置中指定多个进程时,我可以轻松地重现挂起。将其设置为1后,它可以正常工作

WSGIDaemonProcess processes=1 threads=25 maximum-requests=100

我还不确定为什么wsgi中的多个进程会导致麻烦

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并找到了解决方法 - >只需添加到您的apache配置:

WSGIApplicationGroup %{GLOBAL}

显然,如果您的扩展模块不是设计用于子解释器,则会发生这种情况。以上迫使它在主翻译中运行。

来源: