Jest to prawdopodobnie jeden z najdziwniejszych błędów, jakie kiedykolwiek napotkałem podczas korzystania z OpenCV. Wiele się dzieje, więc pozwól mi wyjaśnić to najlepiej jak potrafię.Wczytanie pliku OpenCV po wywołaniu z żądania internetowego
Używam ram sieci Django i OpenCV (cv2) razem. Próbuję odczytać plik z dysku z widoku w Django.
imagePath = os.path.dirname(__file__) + "/1.jpg"
Zasadniczo na tej samej ścieżce co plik views.py znajduje się plik o nazwie "1.jpg". To wszystko robi ten kod. Wystarczająco łatwe. Ale następnym krokiem jest sytuacja, w której szaleją.
Teraz chcę przeczytać plik obrazu znajdujący się w "imagePath". Wymaga to wywołania do cv2.imread
image = cv2.imread(imagePath)
Ale tutaj zaczynają się moje problemy. W jakiś sposób, Apache (a może nawet OpenCV, nie mogę powiedzieć) zaczyna zwisać, a plik nigdy nie jest ładowany. Nie ma komunikatu o błędzie, nie ma niczego.
Wykonując pracę detektywa postanowiłem wypróbować starszą wersję OpenCV (import cv). O dziwo, kiedy wołam cv.LoadImage (imagePath) Apache nie zawiesza się i mój obraz jest ładowany. Nie mam absolutnie pojęcia, dlaczego.
Potencjalnym zadaniem dla mojego problemu jest użycie PIL.
from PIL import Image
import numpy as np
image = Image.open(imagePath)
image = np.asarray(image)
Jeden raz, używając PIL Apache nie powiesić i mogę postępować jak zwykle z mojego obrazu reprezentowane numpy tablicy i zastosowanie dowolnej funkcji CV2 do niego.
Jednak nie jestem osobą, która zadowoli się obejściami i fakt, że cv2.imread jest wiszące naprawdę przeszkadza mi.
Czy ktoś już wcześniej to robił?
EDYCJA: Korzystanie z cv.imread z powłoki Pythona działa dobrze, to tylko z żądania Apache, że zawieszenie się dzieje.
>>> import cv2
>>> image = cv2.imread("1.jpg")
>>> image.shape
(400, 344, 3)
>>>
biegałam OpenCV 2.4.1 kiedy wystąpił ten problem. A następnie skompilowany i zainstalowany 2.4.0 i z jakiegokolwiek powodu, imread już nie wiesza. Bardzo dziwny. –
Mam ten sam problem przy użyciu OpenCV 2.4.2, co dziwne ... – Tickon
Ostatnio napotkałem ten problem, czy jest jakaś poprawka dla starszych wersji OpenCV? Wydaje się, że działa dobrze przy użyciu OpenCV 2.4.6.1. – Mailerdaimon