El imread de OpenCV se cuelga cuando se llama desde una solicitud web

Este es probablemente uno de los errores más extraños con los que me he encontrado al usar OpenCV. Pasan muchas cosas, así que permítame tratar de explicar esto lo mejor que pueda.

Estoy usando el framework web Django y OpenCV (cv2) juntos. Estoy intentando leer un archivo de mi disco desde una vista en Django.

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

Básicamente, en la misma ruta que el archivo views.py hay un archivo llamado "1.jpg". Eso es todo lo que este código está haciendo. Suficientemente fácil. Pero el siguiente paso es donde las cosas se vuelven locas.

Ahora, quiero leer el archivo de imagen ubicado en 'imagePath'. Esto requiere una llamada a cv2.imread

image = cv2.imread(imagePath)

Pero aquí es donde comienzan mis problemas. De alguna manera, Apache (o tal vez incluso OpenCV, no puedo decirlo) comienza a colgarse y el archivo nunca se carga. No hay mensaje de error, nada.

Haciendo un poco de trabajo de detective decidí probar una versión anterior de OpenCV (import cv). Por extraño que parezca, cuando llamo a cv.LoadImage (imagePath), Apache no se cuelga y mi imagen está bien cargada. No tengo ni idea de por qué.

Una solución potencial para mi problema es usar PIL.

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

Una vez más, el uso de PIL Apache no se bloquea y puedo continuar normalmente con mi imagen representada como una matriz numpy y aplicarle cualquiera de las funciones cv2.

Sin embargo, no me conformo con las soluciones y el hecho de que cv2.imread se cuelgue realmente me molesta.

¿Alguien se ha topado con esto antes?

EDITAR: el uso de cv.imread desde un shell de Python funciona bien, solo desde una solicitud de Apache se produce el bloqueo.

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta