【问题标题】:Cannot read a list of pictures cv2.imread()无法读取图片列表 cv2.imread()
【发布时间】:2017-06-21 21:37:21
【问题描述】:

我是编程新手,我想用 gui 制作图片缩放器。 我在制作 gui 时遇到问题。 我抓住了代码中有问题的部分:

from tkinter import *
from tkinter import filedialog
import os, backend, glob2, cv2

loaded_pics=[]
picture_read=[]
window = Tk()

browsed_dir = StringVar()

browsed_dir.set(filedialog.askdirectory(initialdir="/",title='Please select a directory'))
file_path = browsed_dir.get()#+"/"

for filename in os.listdir(file_path):
    if filename.endswith(('.jpg', '.jpeg', '.gif', '.png')):
        loaded_pics.append(filename)
print(loaded_pics)

try:
    for images in loaded_pics:
        imgs = cv2.imread(images, 1)
        print(imgs)
except:
    print("ERROR")


window.destroy()
window.mainloop()

所以,我有一个 .png/.jpg/.bmp 文件的列表,我可以打印该列表,但我无法使用 cv2.imread() 读取它们,当我打印(imgs) 时,我得到“无"-s.

(我还没有设法用 glob2 做到这一点。它适用于当前目录,但我无法用 filedialog 做到这一点。)

希望有人能帮忙。

提前致谢!

【问题讨论】:

  • 好吧,也许问题出在文件路径上。
  • 我看到了两种可能性。无法读取图像,因为 opencv imread 不支持它们的文件格式(如果将 emf 文件保存为 png 左右,可能会发生这种情况)。或者您的文件或文件夹名称有问题。它可能包含无法正确解释的非 ASCII 字符。
  • 这里有一些可以提供帮助的回复:stackoverflow.com/questions/26392336/…
  • 谢谢@user1269942。解决方案是 [stackoverflow.com/a/26392490/7507462] without 'Image.open'

标签: python opencv listdir cv2


【解决方案1】:

您正在loaded_pics 中构建文件名列表。但这不包括目录名称file_path。所以当你调用imread时,你的图像实际上位于file_path/filename,但你只是传递了filename。所以 cv2 找不到你的文件,并返回None

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2016-08-19
    • 1970-01-01
    • 2020-07-23
    • 2014-06-30
    • 2021-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多