2017-01-30 64 views
0

我有一組web API,我使用WSGI在Apache上運行圖像處理。 最近我升級我的OpenCV 3.2(我使用Python 2.7) 的OpenCV似乎當我從控制檯運行它的工作很好,但是當我使Web API調用OpenCV的掛在轉換圖像灰度:OpenCV 3.2掛在cv2.cvtColor上

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) 

UPDATE: 的問題是與WSGI。當我在apache配置中爲WSGIDaemonProcess指定多個進程時,我可以輕鬆地重現掛起。它設置爲1後,它的工作原理

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

我仍然不知道爲什麼在WSGI事業多個進程困擾

+0

你有檢查的圖像尺寸時,它掛起? – ilke444

+0

@ ilke444 我發現一直懸掛的是852x852。這裏是:https://drive.google.com/open?id=0B_eaJCfhUFmFWmdJQzhKVGJNbDQ – Deman

+0

[OpenCV imread掛在Web請求調用時可能重複](http://stackoverflow.com/questions/11315043/opencv-imread -hanging-當所謂-從-A-Web的請求) – ilke444

回答

1

我也有類似的問題,並找到了解決 - >只需添加到您的Apache配置:

WSGIApplicationGroup %{GLOBAL} 

顯然它會發生,當你有一個擴展模塊不適合在sub解釋器工作。上述強迫它在主要翻譯中運行。

來源: