2015-02-12 2 views
0

Я делаю повторение большого выбора и выполняя набор задач на этих изображениях. Цикл не прерывается, но когда пришло время доступа к изображению, переменная возвращает None. Я попытался определить, что делает изображение несовместимым, но я не могу. Мой вопрос: как я могу получить какую-то трассировку, когда изображение не загружается в OpenCV? В более общем плане, каковы параметры совместимости, которые должно соответствовать изображению, и как я могу проверить их?Получение трассировки на открытии изображений opencv с помощью python?

Вот отрывок из моего кода:

images = [] 
image_names = [] 
for image in os.listdir('images'): 
    print image 
    images.append(cv2.imread('images\\' + image, 1)) 
    image_names.append(image) 

x = 0 
while x < len(images): 
    print x 
    print image_names[x] 
    print images[x].mean() # it breaks here with image[x] being None 
    x += 1     # so the problem must be where the image is opened 

документация четко указано, что метод imread() не будет сообщать об ошибке, если он не может открыть, только возвращает None. Я мог бы просто проверить это и исключить это изображение, но оно оказалось для них большим, поэтому я хотел бы исправить проблему.

ответ

0

«так что проблема должна быть там, где изображение открыто» - точно!

for image in os.listdir('images'): 
    print image 
    im = cv2.imread('images\\' + image, 1) 
    if im != None: 
     images.append(im) 
     image_names.append(image) 
    else: 
     print "invalid:", image 
+0

Не здесь, где изображение открыто, я уже подтвердил это. И я также заявил, что «метод imread() не сообщает об ошибке, если он не открывается, возвращает только« Нет ». Я мог бы просто проверить это и исключить это изображение». Мой вопрос состоял в том, как я узнаю «почему»? –