2017-01-30 16 views
0

У меня есть набор веб-API, которые я запускаю на Apache с WSGI для обработки изображений. Недавно я модернизировал свой OpenCV 3.2 (я использую Python 2.7) OpenCV, кажется, работает хорошо, когда я запускаю его из консоли, но когда я делаю веб-API вызывает OpenCV вешает на преобразование изображения в оттенках серого:OpenCV 3.2 зависает на cv2.cvtColor

cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Это абсолютно случайно, не удалось найти шаблон. Несколько раз он висит, а иногда он работает для одного и того же изображения. Любые идеи?

Дополнительная информация: Когда я делаю это из команды оболочки все работает отлично:

>>> 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 висит при вызове из веб-запроса] (http://stackoverflow.com/questions/11315043/opencv-imread -hanging-когда-востребованный из-а-веб-запроса) – ilke444

ответ

1

У меня был подобный вопрос и нашел исправление -> просто добавьте в файл конфигурации Apache:

WSGIApplicationGroup %{GLOBAL} 

По-видимому, это случается, когда у вас есть модуль расширения, не предназначенный для работы в суб-интерпретаторе. Вышеуказанное заставляет его работать в основном интерпретаторе.

Источники:

 Смежные вопросы

  • Нет связанных вопросов^_^