【发布时间】:2017-06-16 01:19:42
【问题描述】:
我有一组 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。当我在 Apache 配置中为 WSGIDaemonProcess 指定多个进程时,我可以轻松地重现挂起。将其设置为 1 后,它可以工作
WSGIDaemonProcess processes=1 threads=25 maximum-requests=100
我仍然不确定为什么wsgi中的多个进程会导致麻烦
【问题讨论】:
-
你检查过图像挂起时的尺寸吗?
-
@ilke444 我发现一直挂着的是 852x852。这是:drive.google.com/open?id=0B_eaJCfhUFmFWmdJQzhKVGJNbDQ
标签: python-2.7 opencv mod-wsgi wsgi opencv3.1