Я пытаюсь масштабировать и сохранять тысячи изображений в каталоге.
Мне удалось изменить размеры изображений. Однако при сохранении ошибок возникают ошибки.
Код ниже. Помогите мне.
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"
РЕДАКТИРОВАТЬ:
Проверьте правильность пути изображения и, если это на самом деле изображение с форматами, принятыми 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
Это должно сработать!
img.shape
ошибку до того, как оператор return
может произойти, потому что imread()
возвращает None
.
cv2.imread(addr)
вернулNone
. Вы уверены, чтоaddr
правильный? Есть ли в этом каталоге файлы, не относящиеся к изображениям?