cv2.imread总是返回NoneType

32

cv2.imread总是返回NoneType

我正在使用Python 2.7版本和OpenCV 2.4.6在64位Windows 7上。

也许这是某种错误或权限问题,因为在另一台计算机上相同的Python和cv2软件包安装可以正常工作。 下面是代码:

im = cv2.imread("D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)

我从http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载了OpenCV。感激不尽,希望能得到一些提示。


尝试使用cv2.imread(r"D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)。r将字符串转换为“原始字符串”,不会转义特殊字符,因此您将看到一个更合理的结果。这是因为默认情况下,Python字符串接受某些特殊的“转义序列”。例如,“\n”表示换行。有关更多详细信息,请参见此处:http://docs.python.org/2/reference/lexical_analysis.html。还要查看路径是否存在。 - Black Dagger
1
导入 os 打印 os.path.exists(r'D:\testdata\some.tif')。用于查看路径是否存在。去掉 r,我敢肯定它不会工作。 - Black Dagger
14个回答

0

我曾经遇到过类似的问题,改变斜杠方向可以解决:

/改为\


将“/”更改为“\”。您错了。首先,这是一个Python问题,在编写Windows路径字符串时常见,因为在Python中路径中发现的“\”是转义标记。在Python中,几个不可打印字符(如CR)可以被转义,即使用转义标记“\”和一个字母组合来编写,例如'\r'表示'CR'。字符串“\red”包含不需要的“CR”。其次,为了防止这种情况,请使用“原始字符串”,例如'r\red',其中''没有特定的含义,使用'/'代替''在路径中(Python容忍),或者使用专门创建简单''的转义序列'\'。 - mins

0
有时文件可能会损坏。如果文件存在且cv2.imread返回为“无”,则可能是这种情况。
尝试从文件资源管理器中打开该文件,看看是否有效。

0

我花了一些时间,只发现这个错误是由于我的情况下损坏的图像文件引起的。因此,请手动检查您的文件,以确保它是有效的并且可以由常见的图像查看器打开。


-1

我遇到了这个问题。结果发现PIL模块提供了这个功能。 同样,numpy.imread和scipy.misc.imread在我安装PIL之前都不存在。

在我的配置(win7 python2.7)中,操作如下:

cd /c/python27/scripts
easy_install PIL

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