gpt4 book ai didi

python - Python cv2.imread返回 'NoneType'对象没有属性 'shape'

转载 作者:行者123 更新时间:2023-12-02 17:21:17 25 4
gpt4 key购买 nike

我正在尝试从名为“Bilder”的文件夹中使用cv2.imread读取图片,但始终返回None。当我将图片放在“StraßenverkehrProjekt”文件夹(该文件夹中还保存我的代码[module.py]的文件夹)中时,它可以工作。

图片的文件夹路径:C:\Users\ramif\Desktop\Straßenverkehr Projekt\Bilder
代码的文件夹路径:C:/Users/ramif/Desktop/Straßenverkehr Projekt/module.py
追溯(最近通话):

File "c:/Users/ramif/Desktop/Straßenverkehr Projekt/module.py", line 12, in read_image print(img.shape)

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


import cv2
import matplotlib.pyplot as plt
import numpy as np
import os

def read_image():
'reading the images'
folder = os.path.join(os.path.dirname(__file__),"Bilder")
for i in os.listdir(folder):
img = cv2.imread(i)
print(img.shape)

read_image()

最佳答案

cv2.imread令人讨厌的功能之一是,如果发生错误,它将不会引发异常。您必须检查返回值。 “NoneType”始终是找不到文件的线索。有很多方法可以解决此问题。从您的代码开始,我想到的最简单的方法是使用os.chdir将工作目录更改为图片所在的位置:

import cv2
import matplotlib.pyplot as plt
import numpy as np
import os

def read_image():
'reading the images'
folder = os.path.join(os.path.dirname(__file__),"Bilder")
os.chdir(folder)
for i in os.listdir(folder):
img = cv2.imread(i)
print(img.shape)

read_image()

另一种解决方案是在for循环中使用 os.path.join,即
for i in os.listdir(folder):
fullpath = os.path.join(folder, i)
img = cv2.imread(fullpath)
print(img.shape)

@ gautam-bose答案应该适用于Linux系统,但是我忘记了Python希望路径分隔符在Windows中看起来像什么。如果您使用 print(folder),则可以了解分隔符是什么。

关于python - Python cv2.imread返回 'NoneType'对象没有属性 'shape',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62121615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com