22

cv2.imread总是回来NoneType

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

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

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

我从http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载了 OpenCV 。任何线索将不胜感激。

4

13 回答 13

10

首先,确保路径有效,不包含任何单个反斜杠。检查其他答案,例如https://stackoverflow.com/a/26954461/463796

如果路径已修复但图像仍未加载,则可能确实是截至 2013 年尚未解决的OpenCV 错误cv2.imread。对我来说在 Win32 下也无法正常工作。

同时,使用 LoadImage,它应该可以正常工作。

im = cv2.cv.LoadImage("D:/testdata/some.tif", CV_LOAD_IMAGE_COLOR)
于 2013-07-30T14:17:20.963 回答
8

就我而言,问题是路径中的空格。在我将图像移动到没有空格的路径后,它起作用了。

于 2018-03-18T04:15:51.697 回答
7

尝试改变斜线的方向

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

或将 r 添加到字符串的开头

im = cv2.imread(r"D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
于 2014-11-16T06:22:00.127 回答
6

只是偶然发现了这个。

解决方案非常简单但不直观。

  • 如果你使用相对路径,你可以分别使用 '\' 或 '/ test\pic.jpg'test/pic.jpg
  • 如果你使用绝对路径,你应该只在/.../test/pic.jpgunix 或C:/.../test/pic.jpgwindows中使用 '/'
  • 为了安全起见,只需for root, _, files in os.walk(<path>):abs_path = os.path.join(root, file). 之后调用 imread ,因为img = ocv.imread(abs_path)总是会起作用。
于 2017-05-14T11:57:11.320 回答
6

我之前在 ubuntu 18.04 上也遇到过同样的问题。

cv2.imread(path)

当我将path论点从Relative_File_Path更改为 时,我解决了它Absolute_File_Path

希望它有用。

于 2019-12-16T10:48:28.777 回答
4

如果这个问题中没有人提到,另一种解决方法是使用plt读取图像,然后将其转换为BGR格式。

img=plt.imread(img_path)
print(img.shape)
img=img[...,::-1]

在 cv2.imread 中已经提到 不读取 jpg 文件

于 2020-06-14T06:01:25.497 回答
2

这需要很长时间才能解决。首先确保文件在目录中,并检查即使 Windows 资源管理器说文件是“JPEG”,它实际上是“JPG”。第一个打印语句是确保文件实际存在的关键。我是一个初学者,所以如果代码很糟糕,那就这样吧。代码,只是导入一张图片并显示它。如果代码找到该文件,那么将在 python 窗口中打印 True。

import cv2
import sys
import numpy as np
import os

image_path= "C:/python27/test_image.jpg"
print os.path.exists(image_path)



CV_LOAD_IMAGE_COLOR = 1 # set flag to 1 to give colour image
CV_LOAD_IMAGE_COLOR = 0 # set flag to 0 to give a grayscale one
img = cv2.imread(image_path,CV_LOAD_IMAGE_COLOR)
print img.shape
cv2.namedWindow('Display Window') ## create window for display
cv2.imshow('Display Window', img) ## Show image in the window
cv2.waitKey(0) ## Wait for keystroke
cv2.destroyAllWindows() ## Destroy all windows
于 2015-09-08T20:34:49.287 回答
1

我遇到了类似的问题,将图像名称更改为英文字母对我有用。此外,它不适用于数字名称(例如 1.jpg)。

于 2019-04-01T07:07:44.673 回答
1

我的操作系统是 Windows 10。我注意到 imread 对路径非常敏感。没有任何关于斜线的建议对我有用,所以我如何设法解决问题:我已将文件放入项目文件夹并输入:img = cv2.imread("MyImageName.jpg", 0)

所以没有任何路径和文件夹,只有文件名。这对我有用。还可以尝试来自不同来源和不同格式的不同文件

于 2020-12-21T19:34:04.123 回答
0
>>> im=cv2.imread("C:\Users\Virgile\Downloads\red.JPG")
>>> print im
None

>>> im=cv2.imread("C:/Users/Virgile/Downloads/red.JPG")
>>> print im
[[[ 15  36  51]
  [ 18  34  51]
  [ 19  33  51]
  ...,

(用opencv 3.0.0测试)

于 2015-05-25T15:39:28.213 回答
0

我有一个类似的问题,改变斜线的方向有效:

更改/\

于 2017-04-20T16:16:25.467 回答
0

我花了一些时间才发现这个错误是由我的案例中损坏的图像文件引起的。因此,请手动检查您的文件以确保其有效并且可以被普通图像查看器打开。

于 2018-02-11T00:33:56.520 回答
-1

我遇到过这个。原来 PIL 模块提供了这个功能。同样,在我安装 PIL 之前,numpy.imread 和 scipy.misc.imread 都不存在

在我的配置(win7 python2.7)中,这样做如下:

cd /c/python27/scripts
easy_install PIL
于 2014-03-13T21:02:16.213 回答