我正在使用OpenCV将图像读入numpy.array,它们具有以下形状。

import cv2

def readImages(path):
    imgs = []
    for file in os.listdir(path):
        if file.endswith('.png'):
            img = cv2.imread(file)
            imgs.append(img)
    imgs = numpy.array(imgs)
    return (imgs)

imgs = readImages(...)
print imgs.shape  # (100, 718, 686, 3)

每个图像具有718x686像素/尺寸。有100张图像。

我不想在718x686上工作,我想将像素合并为一个尺寸。也就是说,形状应类似于:(100,492548,3)。无论如何,OpenCV(或任何其他库)或Numpy中是否都允许我这样做?

最佳答案

在不修改您的阅读功能的情况下:

imgs = readImages(...)
print imgs.shape  # (100, 718, 686, 3)

# flatten axes -2 and -3, using -1 to autocalculate the size
pixel_lists = imgs.reshape(imgs.shape[:-3] + (-1, 3))
print pixel_lists.shape  # (100, 492548, 3)

10-08 16:33