これはおそらく、OpenCVを使用したときに私が今までに遭遇したうちで最も異常なエラーの1つです。多くのことが起こっているので、私の能力の中でこれを説明しようとしましょう。Webリクエストから呼び出されたときにOpenCVのimreadがハングアップする
私はDjango WebフレームワークとOpenCV(cv2)を併用しています。私はDjangoのビューからディスクからファイルを読み込もうとしています。
基本的には、views.pyファイルと同じパスに「1.jpg」というファイルがあります。これでこのコードはすべて実行しています。簡単に。しかし、次のステップは物事が狂ってしまうところです。
ここで、 'imagePath'にある画像ファイルを読みたいと思います。これは、cv2.imreadへの呼び出しを必要とします。
image = cv2.imread(imagePath)
これは私の問題が始まるところです。どういうわけか、Apache(あるいは多分OpenCV、私は言うことができません)がハングし始め、ファイルがロードされることはありません。エラーメッセージはありません。何もありません。
私はOpenCVの古いバージョン(import cv)を試してみることにしました。不思議なことに、私がcv.LoadImage(imagePath)を呼び出すと、Apacheがハングして画像が正しく読み込まれません。なぜ私は絶対に考えていない。
私の問題の潜在的な回避策は、PILを使用することです。 PIL Apacheがハングアップしないと、私は私のイメージがnumpyの配列として表現して、通常のように進行し、それにCV2関数のいずれかを適用することができます使用して再度
from PIL import Image
import numpy as np
image = Image.open(imagePath)
image = np.asarray(image)
一つ、。
しかし、私は回避策に取り組むのではなく、cv2.imreadがハングしているという事実が本当に気になります。
誰もこれまでに遭遇したことはありますか?
EDIT:Pythonシェルからのcv.imreadを使用すると、うまく動作します。ハングアップが発生するのは、Apacheリクエストからです。
>>> import cv2
>>> image = cv2.imread("1.jpg")
>>> image.shape
(400, 344, 3)
>>>
この問題が発生したとき、私はOpenCVの2.4.1を実行していました。そして、2.4.0をコンパイルしてインストールしました。何らかの理由で、imreadはもはやハングしません。非常に奇妙な。 –
私はOpenCV 2.4.2を使って同じ問題を抱えています。 – Tickon
最近、この問題が発生しました。古いOpenCVバージョンの修正はありますか? OpenCV 2.4.6.1を使ってうまく動作しているようです。 – Mailerdaimon