Понимание списка Python словарей и OpenCV - PullRequest
0 голосов
/ 13 мая 2018

Когда я запускаю это, Python сидит и берет навсегда на arr. Просто медленно потребляет оперативную память и больше ничего не делает:

import os
import glob
import cv2

root = r'path\to\img'

files = glob.iglob( os.path.join(root,'*.jpg') )

arr = [ { 'img_nm' : fl,
          'img' : cv2.imread( fl ) } for fl in files ]

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 13 мая 2018

Это понимание цикла создаст весь набор данных за один раз.

arr = [ { 'img_nm' : fl,
          'img' : cv2.imread( fl ) } for fl in files ]

Таким образом, для длительной обработки потребуется много времени, чтобы сохранить весь результат в памяти за это время.Лучше было бы обрабатывать каждое изображение по одному с чем-то вроде:

for fl in glob.iglob( os.path.join(root,'*.jpg') ):
    new_image_record = { 
        'img_nm' : fl,
        'img' : cv2.imread( fl )
    }
    # save new record
...