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 总是无。我在导入 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 函数确实有效,而另一些则不同程度地失败。


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

4

1 回答 1

1

如已编辑问题中所述,这是在 OpenCV v2.4 的较新版本中修复的错误。目前似乎没有关于该错误修复的更多信息。

于 2018-06-01T23:48:39.573 回答