为啥 cv2.imread() 不存储我的图像文件的名称?

Posted

技术标签:

【中文标题】为啥 cv2.imread() 不存储我的图像文件的名称?【英文标题】:Why is cv2.imread() not storing the name of my image files?为什么 cv2.imread() 不存储我的图像文件的名称? 【发布时间】:2019-10-23 18:20:16 【问题描述】:

我正在尝试编写一个脚本,它将获取给定目录中的所有图像并格式化大小。

我已经能够使用 OS 将文件作为列表导入并使用循环拆分它们。我已经成功打印了每个文件名和索引,但是当我尝试使用 cv2.imread() 获取维度值时,它返回“None”,使我无法获取形状,并向我抛出 AttributeError。

我已经尝试卸载并重新安装 opencv-python。正如here建议的那样。

import os
import cv2


def imageResize():
    dirlist = os.listdir('images')

    for c, file in enumerate(dirlist):
        print(c, file)
        img = cv2.imread(file)
        height, width = img.shape[0, 2]
        print(height, width)


if __name__ == '__main__':
    imageResize()

预期输出:

0 image17_10.png
600px 400px

1 image15_9.png
500px 500px

...

实际输出:

0 image17_10.png
height, width = img.shape[0,2]

AttributeError: 'NoneType' object has no attribute 'shape'

【问题讨论】:

【参考方案1】:

欢迎堆栈溢出! 打开文件的时候好像漏掉了路径,那行应该是:

cv2.imread('images'+os.path.sep+file)

或从文件名构造文件路径的任何其他方式。

【讨论】:

非常感谢!我以前从未使用过这些模块中的任何一个,所以我想我没有意识到在使用该功能时我需要指定路径!再次感谢!

以上是关于为啥 cv2.imread() 不存储我的图像文件的名称?的主要内容,如果未能解决你的问题,请参考以下文章

python,opencv,imread,imwrite,存储,读取图像像素不一致,这种情况是label使用jpg格式

opencv中 cv2.imread 路径问题

opencv

PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致

OpenCV的图像读取显示及保存

图像处理