python cv2.imread не возвращает ни одного на 6-м изображении - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь импортировать и прочитать все изображения в папке.Однако, когда у меня более 5 изображений, cv2.imread не возвращает ни одного для 6-го изображения.Я пытался использовать разные имена файлов, разные файлы и т. Д., Но я не могу заставить его работать.

import cv2
import numpy as np
import matplotlib.pyplot as plt
from tkinter import filedialog
import os
from mpl_toolkits.mplot3d import Axes3D

global scan_dir
scan_dir = filedialog.askdirectory()
print(scan_dir)
x=os.listdir(scan_dir)

img={}

print(x)

for i in range(0,len(x)):

    print(i)

    img[i] = cv2.imread(x[i], cv2.IMREAD_GRAYSCALE)

    indices[i] = np.where(img[i]<100)

Я получаю следующую ошибку ... (None - это возвращение print(img[i] на 6-й итерации цикла)

None
Traceback (most recent call last):
File "C:\CodeRepository\US-3D\GettingCloser.py", line 55, in <module>
      indices[i] = np.where(img[i]<100)
TypeError: '<' not supported between instances of 'NoneType' and 'int'

У меня та же проблема, еслиЯ пытаюсь это

global scan_dir
scan_dir = filedialog.askdirectory()
print(scan_dir)
x=os.listdir(scan_dir)

img = cv2.imread(x[5], cv2.IMREAD_GRAYSCALE)

Это вернет, что img это None.Это верно для всего, что находится за пятым изображением.

1 Ответ

0 голосов
/ 04 декабря 2018

Должно быть что-то не так с файлом.dict s - неупорядоченная структура данных.Не должно выдавать ошибку всегда на 5th итерации.Однако я внес изменения, которые не приведут к ошибке.Но вам нужно отладить этот образ

for i in range(0,len(x)):

    print(i)

    img[i] = cv2.imread(x[i], cv2.IMREAD_GRAYSCALE)
    if img[i]:

        indices[i] = np.where(img[i]<100)
...