将JPG,PNG等格式转换为PGM并创建数组:Python

时间:2019-04-21 20:58:32

标签: python-3.x keras computer-vision conv-neural-network

我正在使用以下功能将.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导入图像
  • 从keras.applications.vgg16导入preprocess_input
  • 导入cv2

1 个答案:

答案 0 :(得分:0)

这应该与您的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)