2017-02-04 3 views
1

Я новичок в программировании, и я хотел бы сделать изображение с разрешением gui. У меня проблемы с созданием gui. я захватил проблемную часть коды:Невозможно прочитать список изображений cv2.imread()

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), я получил «None» -s.

(мне не удалось сделать это с glob2. Он хорошо работает с текущей директории, но я не мог сделать это с FileDialog.)

Я надеюсь, что кто-то может помочь.

Заранее благодарен!

+0

Ну, может быть, проблема в файловой ссылке. – koger23

+0

Я вижу две возможности. Либо изображения не могут быть прочитаны, потому что их fileformat не поддерживается opencv imread (это может произойти, если вы сохраните файл emf как png или так). Или у вас возникли проблемы с вашим именем файла или папки. Возможно, в нем содержатся символы, отличные от ASCII, которые не будут правильно интерпретироваться. – ImportanceOfBeingErnest

+0

есть несколько ответов здесь, которые могли бы помочь: http://stackoverflow.com/questions/26392336/importing-images-from-a-directory-python/26392492 – user1269942

ответ

2

Вы строите список имен файлов в loaded_pics. Но это не включает имя каталога, file_path. Поэтому, когда вы звоните imread, ваше изображение на самом деле находится по адресу file_path/filename, но вы проходите мимо filename. Поэтому cv2 не может найти ваш файл и возвращает None.

Смежные вопросы