phash прерывается, когда появляется объект nonetype

import os, cv2, imagehash, PIL



hashList = []

path = "C:\cardscryer\CardScryer-master\pictures"

folderList = os.listdir(path)
print(folderList)

os.chdir(path)

for folder in folderList:

    fileList = os.listdir(folder)

    for file in fileList:

        cardImage = cv2.imread(os.path.join(folder, file))

        cropImage = cardImage[15:200, 20:420]

        hash = imagehash.phash(PIL.Image.fromarray(cropImage))

        file = file.replace('.jpg','')

        print(file)

        hashList.append([file[:-4], folder, hash])

Я думаю, что «cv2.imread (os.path.join (папка, файл))» по какой-то причине возвращается как none, потому что следующее назначение дает ошибку nonetype, но оно ломается только тогда, когда все подпапки запущены. Изменение его для запуска только в подпапке, в которой происходит ошибка; работает нормально. Я больше всего сбит с толку тем, что при таком незначительном изменении отдача отличается.


person Greg Gee    schedule 17.11.2015    source источник
comment
Я дебил, я оставил .zip файл в папке.   -  person Greg Gee    schedule 17.11.2015


Ответы (1)


При использовании обратной косой черты в путях Windows либо избегайте их, либо используйте необработанные строки:

path = "C:\\cardscryer\\CardScryer-master\\pictures"

or

path = r"C:\cardscryer\CardScryer-master\pictures"
person Michiel Overtoom    schedule 17.11.2015
comment
Вы также можете написать их в стиле Unixy: path = "C:/cardscryer/CardScryer-master/pictures" - person Hugo; 18.11.2015