OpenCV wird beim Aufruf aus einer Web-Anfrage ignoriert

9

Dies ist wahrscheinlich einer der seltsamsten Fehler, die ich jemals bei der Verwendung von OpenCV erfahren habe. Es ist viel los, also lass mich versuchen, dies so gut wie möglich zu erklären.

  1. Ich benutze das Django Web Framework und OpenCV (cv2) zusammen. Ich versuche, eine Datei von meiner Festplatte aus einer Ansicht in Django zu lesen.

    %Vor%

    Grundsätzlich gibt es im selben Pfad wie die Datei views.py eine Datei namens "1.jpg". Das ist alles, was dieser Code tut. Leicht genug. Aber der nächste Schritt ist, wo die Dinge verrückt werden.

  2. Nun möchte ich die Bilddatei lesen, die sich unter 'imagePath' befindet. Dies erfordert einen Aufruf von cv2.imread

    %Vor%

    Aber hier beginnen meine Probleme. Irgendwie fängt Apache (oder vielleicht sogar OpenCV, kann ich nicht sagen) an zu hängen und die Datei wird nie geladen. Es gibt keine Fehlermeldung, nichts.

Als Detektivarbeit habe ich beschlossen, eine ältere Version von OpenCV auszuprobieren (Import cv). Seltsamerweise, wenn ich cv.LoadImage (imagePath) anrufe, hängt Apache nicht und mein Bild wird gerade gut geladen. Ich habe absolut keine Ahnung warum.

Eine mögliche Lösung für mein Problem ist die Verwendung von PIL.

%Vor%

Noch einmal, mit PIL Apache hängt nicht und ich kann wie gewohnt mit meinem Bild als numpy Array und wenden Sie eine der cv2-Funktionen darauf an.

Ich bin jedoch keiner, der sich mit Workarounds begnügt, und die Tatsache, dass cv2.imread hängt, stört mich wirklich.

Ist schon mal jemand darauf gestoßen?

EDIT: Die Verwendung von cv.imread aus einer Python-Shell funktioniert gut, es ist nur von einer Apache-Anfrage, dass der Hang passiert.

%Vor%     
Adrian Rosebrock 03.07.2012, 16:15
quelle

2 Antworten

3

Falsch

%Vor%

richtig

%Vor%     
nk9 26.07.2012 05:19
quelle
2

Ich hatte ein ähnliches Problem und fand eine Lösung - & gt; Fügen Sie einfach Ihre Apache-Konfiguration hinzu:

%Vor%

Scheinbar passiert es, wenn Sie ein Erweiterungsmodul haben, das nicht für den Sub-Interpreter ausgelegt ist. Das obige zwingt es im Haupt-Interpreter zu laufen.

Quellen: django apache mod-wsgi hängt beim Importieren eines Python-Moduls aus der .so-Datei Ссылка

    
Hugo Flick 21.03.2017 13:56
quelle

Tags und Links