Python的OpenCV cv2.imread始终返回None,而cvFeatDetector会导致python崩溃

11

我正在使用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

没有错误信息,只是im2始终为None。我导入opencv的方式可能出了问题吗?有简单的解决方法吗?

当我创建

 cvFeatDetector  = cv2.FeatureDetector_create("MSER")

我懂了,所以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

我觉得这很奇怪,因为cv2.cvtColor成功将图像转换为灰度。所以有些cv2函数是可以工作的,而其他一些则有不同程度的失败。


编辑。我通过安装发布的opencv 2.4来解决了这个问题。


你能否在http://code.opencv.org上提交一个bug,附带你的png图像和`cv2.getBuildInformation()`的输出? - Andrey Kamaev
你尝试过直接导入cv2吗?(就是让它可以直接import cv2)? - cwallenpoole
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接