【问题标题】:Python's OpenCV cv2.imread always returns None and cvFeatDetector crashes pythonPython 的 OpenCV cv2.imread 总是返回 None 并且 cvFeatDetector 崩溃 python
【发布时间】:2013-03-11 16:17:15
【问题描述】:

我正在使用 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 解决了这个问题。

【问题讨论】:

  • 您能否在code.opencv.org 上提交一个错误,并附上您的png 图像和cv2.getBuildInformation() 的输出?
  • 您是否尝试过直接导入 cv2(如,使您可以import cv2?)

标签: python opencv


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2021-02-27
    • 2017-12-22
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多