Python的OpenCV cv2.imread始终返回None,cvFeatDetector崩溃
我正在学习如何在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版本的新更新中修复了。目前似乎没有关于这个错误修复的更多信息。