Python的OpenCV cv2.imread总是返回None而cvFeatDetector崩溃了python

Ero*_*mic 10 python opencv

我在python中使用opencv弄湿了,我觉得一个好的开始就是加载一个图像.

我在我的系统上构建了opencv,并在目录tpl/opencv中有python绑定和opencv dll,这与我的项目有关.

以下是一些演示此问题的代码:

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
Run Code Online (Sandbox Code Playgroud)

没有错误消息,im2总是无.我可以用我导入opencv的方式搞砸了吗?有一个简单的解决方法吗?

当我创造

 cvFeatDetector  = cv2.FeatureDetector_create("MSER")
Run Code Online (Sandbox Code Playgroud)

我知道,所以cv2的一部分似乎有效


作为一种解决方法,我只是用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
Run Code Online (Sandbox Code Playgroud)

我发现这很奇怪,因为cv2.cvtColor将图像成功转换为灰度.所以一些cv2函数确实有效,而其他函数则不同程度.


编辑.我通过安装opencv的2.4版来解决这个问题.

Zev*_*Zev 1

正如已编辑的问题中所述,这是 OpenCV v2.4 的新版本中修复的一个错误。目前似乎没有有关错误修复的进一步信息。