Масштабирование и сохранение изображений (AttributeError: объект 'NoneType' не имеет атрибута 'shape') - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь масштабировать и сохранять тысячи изображений в каталоге.

Мне удалось изменить размеры изображений.Однако при сохранении возникают ошибки.

Код приведен ниже.Помогите мне, пожалуйста.

import cv2
import numpy as np
import os

def scaling_shirink(addr):
    img = cv2.imread(addr)
    height, width = img.shape[:2]
    shrink = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
    cv2.imshow('Shrink', shrink)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

count = 0
IMAGE_DIR_BASE = 'C:/ClassShared\Data/CM_ML_IMG_181011/CASE_01/FPS_10_PNG'
image_file_list = os.listdir(IMAGE_DIR_BASE)
for file_name in image_file_list:
    image = scaling_shirink(IMAGE_DIR_BASE + '/' + file_name)
    cv2.imwrite('C:/ClassShared\Data/CM_ML_IMG_181011/CASE_01/34_sdetect_db1/' + '_' + "%04d" % (count) + '.png', image)
    count = count + 1

Сообщения об ошибках выглядят следующим образом.

Traceback (most recent call last):
  File "C:/PycharmProjects/TS_S/Scailing.py", line 19, in <module>
    image = scaling_shirink(IMAGE_DIR_BASE + '/' + file_name)
  File "C:/PycharmProjects/TS_S/Scailing.py", line 8, in scaling_shirink
    height, width = img.shape[:2]
AttributeError: 'NoneType' object has no attribute 'shape'

Я не понимаю, почему он говорит AttributeError: объект 'NoneType' не имеет атрибута 'shape'

1 Ответ

0 голосов
/ 15 октября 2018

РЕДАКТИРОВАТЬ:

Проверьте правильность пути к изображению и на самом ли деле это изображение с форматами, принятыми Opencv.Потому что, если ваш путь неверен, img = cv2.imread(addr) вернет None и height, width = img.shape[:2] выдаст ошибку

Также ваша функция scaling_shirink () возвращает None.Чтобы исправить это, просто измените его на функцию ниже:

def scaling_shirink(addr):
    img = cv2.imread(addr)
    height, width = img.shape[:2]
    shrink = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
    cv2.imshow('Shrink', shrink)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    #this return was missing
    return shrink 

Это должно работать!

...