Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python's OpenCV cv2.imread always returns None and cvFeatDetector crashes python

Tags:

python

opencv

I'm getting my feet wet with opencv in python, and I figure a good place to start is loading an image.

I've built opencv on my system, and have the python bindings and opencv dlls in the directory tpl/opencv, which is relative to my project.

Here is some code that demonstrates the problem:

from tpl.opencv import cv2
from tpl.opencv.cv2 import cv
from PIL import Image

pil_img =  Image.open('C:/test_file.jpg') #Read a temp file, the input is actually a computed image chip
tmpname =  'C:/tmp.png' 
pil_img.save(tmpname,'PNG') # Write the image chip to disk

im  = cv.LoadImage(tmpname) # This seems to work
im2 = cv2.imread(tmpname)   # This always returns None

There is no error message, im2 is just always None. Could I have messed something up with the way I'm importing opencv? Is there a simple workaround?

When I create

 cvFeatDetector  = cv2.FeatureDetector_create("MSER")

I get , so that part of cv2 seems to work


As a workaround I just loaded the image with numpy

        im2 = numpy.imread(inname)
        im  = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY) # This works. I was able to imshow it too
        cvFeatDetector  = cv2.FeatureDetector_create("MSER") # Seems to produce a valid object
        cvFeatExtractor = cv2.DescriptorExtractor_create("SIFT") # Seems to produce a valid object
        kpts         = cvFeatDetector.detect(im)  # Crashes python

I find this very odd, because cv2.cvtColor converts the image successfully to grayscale. So some cv2 functions do work, and others fail to varying degrees.


Edit. I fixed this by installing the released 2.4 of opencv.

like image 723
Erotemic Avatar asked Mar 11 '13 16:03

Erotemic


1 Answers

As stated in the edited question, this is a bug that was fixed in a newer release of v2.4 of OpenCV. No further info seems to be currently available about the bug fix.

like image 165
Zev Avatar answered Oct 29 '22 12:10

Zev