В функции convert_pil_to_numpy_array()
первоначально использованная переменная image
отличается от переменной image
, в которой хранится объект crop
ped Image
.
from PIL import Image
image_path = "C:\\temp\\Capture.JPG"
image = Image.open(image_path)
print(type(image))
#Output
<class 'PIL.JpegImagePlugin.JpegImageFile'>
Это JpegImageFile
объект. Если вы посмотрите на другую переменную image
, которая хранит обрезанное изображение и затем передается в np.array
, эта переменная является объектом класса Image
:
image = image.crop((left_margin, upper_margin, right_margin, lower_margin))
print(type(image))
#Output:
<class 'PIL.Image.Image'>
Проблема заключается в значениях кортежей, передаваемых в функцию crop()
. Со значениями полей, которые вы передали crop
, изображение не может быть преобразовано в массив и снова возвращено объект Image
:
image_arr = np.array(image)
print(image_arr)
#Output:
<PIL.Image.Image image mode=RGB size=224x0 at 0x39E4F60>
Поскольку размеры вашего изображения отличались от моих, я использовал разные значения для 4-кортежа, переданного в crop()
, и получил массив:
image = image.crop((50,100,60,120))
image_arr = np.array(image)
#Output:
[[[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]
[-2.11790393 -2.03571429 -1.80444444]]..etc
Что нужно сделать, проверить значения полей и сохранить обрезанное изображение в файл (jpg, png и т. Д.), А затем преобразовать в массив. Обратите внимание, что я не сохраняю сохраненное изображение в любую переменную. :
image.crop((50, 60, 100, 120)).save("test.jpg")
image_arr = np.array(Image.open("test.jpg")) / 255
mean = np.array([0.485, 0.456, 0.406])
std_dv = np.array( [0.229, 0.224, 0.225])
image_arr = (image_arr - mean)/std_dv
print(image_arr)
#Output:
[[[-0.04580872 0.08263305 0.30448802]
[-0.91917116 -0.81022409 -0.58440087]
[ 0.81042898 0.95798319 1.17594771]
...
[ 2.19753404 2.37605042 2.58771242]
[-0.02868396 -0.19747899 0.13019608]
[-0.11430773 -0.28501401 0.04305011]]
....etc.