這可能是我在使用OpenCV時遇到過的最奇怪的錯誤之一。有很多事情要做,所以讓我盡我所能解釋這一點。OpenCV imread在網絡請求中調用時掛起
我一起使用Django web框架和OpenCV(cv2)。我試圖從Django的視圖中讀取我的磁盤上的文件。
imagePath = os.path.dirname(__file__) + "/1.jpg"
基本上,在與views.py文件相同的路徑中有一個名爲「1.jpg」的文件。這就是所有這些代碼正在做的事情。很簡單。但下一步就是事情變得瘋狂。
現在,我想讀取位於'imagePath'的圖像文件。這需要呼叫cv2.imread
image = cv2.imread(imagePath)
但這是我的問題開始的地方。不知何故,Apache(或者甚至OpenCV,我無法知道)開始掛起,並且文件從不加載。沒有錯誤信息,沒有任何東西。
做一些偵探工作我決定嘗試一箇舊版本的OpenCV(import cv)。奇怪的是,當我調用cv.LoadImage(imagePath)時,Apache不會掛起,我的圖像加載得很好。我完全不知道爲什麼。
潛在的解決我的問題的方法是使用PIL。
from PIL import Image
import numpy as np
image = Image.open(imagePath)
image = np.asarray(image)
一再次使用PIL Apache不掛,我可以繼續按正常的我的形象表現爲numpy的陣列和應用任何CV2功能吧。
但是,我不是一個解決變通辦法和cv2.imread懸掛真的困擾我的事實。
有沒有人碰到過這個?
編輯:從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