OpenCV imread pendurado quando chamado de uma solicitação da web

Este é provavelmente um dos erros mais estranhos que eu já encontrei ao usar o OpenCV. Há muita coisa acontecendo, então deixe-me tentar explicar isso da melhor maneira possível.

Eu estou usando o framework web Django e o OpenCV (cv2) juntos. Eu estou tentando ler um arquivo fora do meu disco de uma visão no Django.

imagePath = os.path.dirname(__file__) + "/1.jpg"

Basicamente, no mesmo caminho do arquivo views.py existe um arquivo chamado "1.jpg". Isso é tudo que esse código está fazendo. Bastante fácil. Mas o próximo passo é onde as coisas ficam loucas.

Agora, quero ler o arquivo de imagem localizado em 'imagePath'. Isso requer uma chamada para cv2.imprimir

image = cv2.imread(imagePath)

Mas é aí que meus problemas começam. De alguma forma, o Apache (ou talvez mesmo o OpenCV, não sei dizer) começa a ser interrompido e o arquivo nunca é carregado. Não há mensagem de erro, não há nada.

Fazendo algum trabalho de detetive, decidi experimentar uma versão mais antiga do OpenCV (import cv). Estranhamente, quando eu chamo cv.LoadImage (imagePath) o Apache não trava e minha imagem é carregada muito bem. Eu não tenho absolutamente nenhuma ideia do porquê.

Um trabalho em potencial para o meu problema é usar o PIL.

from PIL import Image
import numpy as np
image = Image.open(imagePath)
image = np.asarray(image)

Uma vez, usando o PIL, o Apache não trava e eu posso prosseguir normalmente com minha imagem representada como numpy array e aplicar qualquer uma das funções cv2 nele.

No entanto, eu não sou um para se contentar com soluções alternativas e o fato de que o cv2.imread está pendurado realmente me incomoda.

Alguém já correu para isso antes?

EDIT: Usando cv.imread de um shell Python funciona bem, é apenas a partir de um pedido do Apache que o jeito acontece.

>>> import cv2
>>> image = cv2.imread("1.jpg")
>>> image.shape
(400, 344, 3)
>>> 

questionAnswers(2)

yourAnswerToTheQuestion