Python的OpenCV cv2.imread始终返回None,cvFeatDetector崩溃

11 投票
1 回答
5692 浏览
提问于 2025-04-17 18:42

我正在学习如何在Python中使用opencv,觉得从加载一张图片开始是个不错的选择。

我在我的系统上安装了opencv,并且把Python的绑定和opencv的dll文件放在了一个叫tpl/opencv的文件夹里,这个文件夹是相对于我的项目的。

下面是一些代码,展示了我遇到的问题:

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版本解决了这个问题。

相关问题:

1 个回答

1

根据编辑过的问题,这个问题是一个错误,已经在OpenCV的2.4版本的新更新中修复了。目前似乎没有关于这个错误修复的更多信息。

撰写回答