Преобразование форматов JPG, PNG и т. Д. В PGM и создание массива: Python - PullRequest
0 голосов
/ 21 апреля 2019

Я конвертирую .pgm изображения в массив, используя функцию ниже. Но сейчас я получил все форматы изображений, такие как .jpg / png и т. Д. Теперь я хочу преобразовать все в .pgm (без сбережений) и должен преобразовать в массив. я использую функцию ниже для преобразования в массивы

def image_array(pgm):
    pic = image.load_img(pgm, target_size=(224, 224))
    x = image.img_to_array(pic)
    x = np.expand_dims(x, axis=0)
    x = preprocess_input(x)
    npfeatures = np.array(x)
    return npfeatures

Я попробовал приведенные ниже методы, но не смог интегрировать эти вещи в вышеуказанную функцию.

image = cv2.imread('C:/Users/N/Desktop/Test.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

импорт, который я использовал

  • из keras.preprocessing import image
  • из keras.applications.vgg16 import preprocess_input
  • импорт cv2

1 Ответ

0 голосов
/ 22 апреля 2019

Это должно дать тот же результат, что и ваша image_array функция:

def image_array(filename):
    x = cv2.imread(filename)
    x = cv2.resize(x, (224, 224))
    x = np.expand_dims(x, axis=0)
    x = preprocess_input(x)
    npfeatures = np.array(x)
    return npfeatures

Теперь, если вы хотите иметь одноканальное изображение, т.е. (224, 224) вместо (224, 224,3), просто используйте cv2.imread(filename, cv2.IMREAD_GRAYSCALE).

. И если вы хотите, чтобы оно было (224, 224, 3), но выглядело серым, то есть с равными всеми тремя компонентами цвета, используйте

    x = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
    x = cv2.resize(x, (224, 224))
    x = np.tile(np.expand_dims(x, 2), 3)
...