Python 2.7 cv2.imread始终返回NoneType
Python 2.7 cv2.imread始终返回NoneType,python-2.7,opencv,windows-7,Python 2.7,Opencv,Windows 7,cv2.imread总是返回NoneType 我在64位Windows7上使用python版本2.7和OpenCV 2.4.6 可能是某种bug或权限问题,因为在另一台计算机上安装完全相同的python和cv2软件包可以正常工作。代码如下: im = cv2.imread("D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR) 我从下载了OpenCV。请提供任何线索。首先,确保路径有效,不包含任何反斜杠。检查其他答案,例如 如果路径是固定的,但图像仍然没有加载,
cv2.imread
总是返回NoneType
我在64位Windows7上使用python版本2.7和OpenCV 2.4.6
可能是某种bug或权限问题,因为在另一台计算机上安装完全相同的python和cv2软件包可以正常工作。代码如下:
im = cv2.imread("D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
我从下载了OpenCV。请提供任何线索。首先,确保路径有效,不包含任何反斜杠。检查其他答案,例如 如果路径是固定的,但图像仍然没有加载,那么从2013年起,它可能确实是一个尚未解决的问题<代码>cv2.imread在Win32下对我来说也不能正常工作 同时,使用LoadImage,它应该可以正常工作
im = cv2.cv.LoadImage("D:/testdata/some.tif", CV_LOAD_IMAGE_COLOR)
我碰到过这个。原来PIL模块提供了这个功能。 类似地,numpy.imread和scipy.misc.imread在我安装PIL之前都不存在 在我的配置(win7 python2.7)中,这是按如下方式完成的:
cd /c/python27/scripts
easy_install PIL
尝试更改斜线的方向
im = cv2.imread("D:/testdata/some.tif",CV_LOAD_IMAGE_COLOR)
或者将r添加到字符串的开头
im = cv2.imread(r"D:\testdata\some.tif",CV_LOAD_IMAGE_COLOR)
(使用opencv 3.0.0进行测试)这需要很长时间才能解决。首先确保该文件位于目录中,并检查即使windows资源管理器说该文件是“JPEG”,但实际上是“JPG”。第一个print语句是确保文件实际存在的关键。我是一个完全的初学者,所以如果代码很烂,那就这样吧。 代码,只是导入一张图片并显示它。如果代码找到该文件,那么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
我有一个类似的问题,改变斜杠的方向是有效的:
将
/
更改为\
刚刚偶然发现了这个
解决方案非常简单,但不直观
- 如果使用相对路径,则可以分别使用“\”或“/”,如
或test\pic.jpg
中所示test/pic.jpg
- 如果使用绝对路径,则应仅使用“/”,如unix的
或windows的/…/test/pic.jpg
中所示C:/…/test/pic.jpg
- 为了安全起见,只需对os.walk()中的root、\ux文件使用
并结合使用:
。之后调用imread,如在abs\u path=os.path.join(root,file)
中,总是可以工作的img=ocv.imread(abs\u路径)
cv2.imread(路径)
当我将路径
参数从相对文件路径
更改为绝对文件路径
时,我解决了这个问题
希望它有用。如果这个问题中没有人提到,另一种解决方法是使用
plt
读取图像,然后将其转换为BGR
格式
img=plt.imread(img\u路径)
打印(图像形状)
img=img[…,:-1]
这一点已在本报告中提到
我的操作系统是Windows 10。我注意到imread对path非常敏感。并没有任何关于斜杠的建议对我有效,所以我如何设法解决这个问题:我已将文件放入项目文件夹并键入: img=cv2.imread(“MyImageName.jpg”,0) 因此,没有任何路径和文件夹,只有文件名。这对我很有效。
还可以尝试使用cv2.imread(r“D:\testdata\some.tif”,CV\u LOAD\u IMAGE\u COLOR),尝试使用不同来源和不同格式的不同文件。r将字符串转换为不转义特殊字符的“原始字符串”,因此您将看到更合理的结果。这是因为默认情况下,python字符串接受某些特殊的“转义序列”。例如,“\n”是一个新行。有关更多详细信息,请参见此处:。另外,请查看路径是否存在。导入os打印os.path.exists(r'D:\testdata\some.tif')。查看路径是否存在。删除r,我确信它不会工作。您的第一个案例失败,因为python将
\r
视为回车字符,而不是opencv的错误。在python中拼写第一行的正确方法是cv2.imread(r“C:\Users\Virgile\Downloads\red.JPG”)
——这个小小的r
告诉它不要对反斜杠做任何不好的事情,这与cv2无关。在第一种情况下,路径不存在,并且imread在linux上返回None
,~/path/file.jpg将不起作用,必须替换为~/home/user/path/file.jpgI。我怀疑它是否适用于此路径。您需要原始前缀,比如r“D:\testdata\some.tif”
@Jean-Françoisfare。我更改了答案以指出路径问题,并在示例代码中修复了它。我相信在写答案的时候,一些图像仍然需要解决方法,即使路径正确,所以我将保留答案None@NelsonGon在这个问题的背景下,这似乎是一个矛盾修饰法。如果图像加载,您将获得一个句柄,而该句柄不能为空。你有什么要补充的信息吗?否则,可能会根据您的情况创建一个新问题,但请提供有关具体情况的更多信息。我可以使用imshow
查看图像,但例如,我无法查看图像的形状,因为它是None
而不是数组。最后,我使用了matplotlib
的imread
,它似乎解决了这个问题(我不知道为什么)。“Change/to\”。你错了。首先,这是一个Python问题,通常在以字符串形式编写Windows路径时会发现,因为在路径中找到的“\”是Python中的转义标记。在Python中,有几个
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