ошибка типа байтовоподобный объект или число>, а не 'Image', когда я пытаюсь использовать np.expand_dim () - PullRequest
0 голосов
/ 16 января 2020
  image_path_dir = 'C:\\Python'
  images_paths = [join(image_path_dir, imagename) for imagename in ['sna3.jpg', 'sna1.jpg', 'bag5.jpg', 't2.jpg', 's3.jpg',
                                                                 'sn2.jpg', 't2.jpg']]



def img_pre_pro(img, img_width=28, img_height=28):

    imgs = [load_img(image_path, target_size=(img_width,img_height)) for image_path in images_paths]

    for imga in imgs:

        imgs = np.expand_dims(imgs, axis = 2)
    imgs_array = np.array([img_to_array(imgss)/255 for imgss in imgs])
    return imgs_array

new_img = img_pre_pro('images_paths')

, когда я удаляю оператор expand_dim из функции, он работает хорошо, но мне нужно изменить размер изображения 'rgb' на 1, это довольно сложно, если делать это только с одним изображением. получить ошибку ниже, когда я пытаюсь

> TypeError                                 Traceback (most recent call
> last) <ipython-input-54-bb26feed97ab> in <module>
>      15     return imgs_array
>      16 
> ---> 17 new_img = img_pre_pro('images_paths')
>      18 
> 
> <ipython-input-54-bb26feed97ab> in img_pre_pro(img, img_width,
> img_height)
>      11     for imga in imgs:
>      12 
> ---> 13         imgs = np.expand_dims(imgs, axis = 2)
>      14     imgs_array = np.array([img_to_array(imgss)/255 for imgss in imgs])
>      15     return imgs_array
> 
> <__array_function__ internals> in expand_dims(*args, **kwargs)
> 
> c:\users\allaye\appdata\local\programs\python\python37\lib\site-packages\numpy\lib\shape_base.py
> in expand_dims(a, axis)
>     589         a = asarray(a)
>     590     else:
> --> 591         a = asanyarray(a)
>     592 
>     593     if type(axis) not in (tuple, list):
> 
> c:\users\allaye\appdata\local\programs\python\python37\lib\site-packages\numpy\core\_asarray.py
> in asanyarray(a, dtype, order)
>     136 
>     137     """
> --> 138     return array(a, dtype, copy=False, order=order, subok=True)
>     139 
>     140 
> 
> TypeError: int() argument must be a string, a bytes-like object or a
> number, not 'Image'

Ответы [ 2 ]

1 голос
/ 16 января 2020
def img_pre_pro(img, img_width=28, img_height=28):

    imgs = [load_img(image_path, target_size=(img_width,img_height)) for image_path in images_paths]



    imgs_array = np.array([img_to_array(imgss)/255 for imgss in imgs])
    imgs_array = np.expand_dims(imgs_array, axis = 3)

    return imgs_array

new_img = img_pre_pro(img)
new_img.shape

result is (7, 28, 28, 1, 3)

массив должен быть тензор 4D, а не пять, и я не могу использовать np.squeeze ()

0 голосов
/ 17 января 2020

Полагаю, вы никогда не читали строку документации load_img, она принимает аргумент для преобразования цветных изображений в оттенки серого, если вы этого хотите, используя ваш собственный код, я только что добавил аргумент color_mode.

def img_pre_pro_keras(img, img_width=28, img_height=28, normalization = None):

    imgs = [load_img(image_path, target_size=(img_width,img_height),color_mode='grayscale') for image_path in images_paths]

    imgs_array = np.array([img_to_array(imgss)/255 for imgss in imgs])

    return imgs_array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...