将图像转换为RGB值的平面列表的最快方法是什么

2024-06-25 06:03:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将图像转换为rgb值的平面列表。例如,如果我们有一个(3,3)图像,它碰巧必须遵循rgb矩阵:

(5,10,12)(13,16,12)(10,14,2)

(6,3,6)(13,14,15)(50,60,210)

(12,15,19)(20,13,27)(100,200,210)

我想快速生产: [5,10,12,13,16,12,10,14,2, 6,3,6,13,14,15,50,60 210, 12、15、19、20、13、27、100、200、210]

我现在在做什么

def flatten(matrix):
        def decompose(row):
            retrow = []
            for item in row:
                retrow = retrow + item
            return retrow
        retlist = []
        for row in matrix:
            retlist = retlist + decompose(row)
        return retlist
curimg = #load in the pillow img
curimg = np.array(curimg).tolist()
curimg = flatten(curimg)

我是为一个机器学习应用程序而做的,我有大量的图像需要这样做。我很确定我的渐进运行时是好的,但我想确保我没有做这不必要的慢。在


Tags: in图像forreturndefrgbitemmatrix
2条回答

据我所知,我认为您可以使用[chain][1]From{},如下所示:

my_tuple = [(5, 10, 12),(13, 16, 12),(10, 14, 2),(6, 3, 6), (13, 14, 15), (50, 60, 210),(12, 15, 19), (20, 13, 27), (100, 200, 210)]

from itertools import chain

x = chain(*my_tuple)
print list(x)

OUTPUT:
[5, 10, 12, 13, 16, 12, 10, 14, 2, 6, 3, 6, 13, 14, 15, 50, 60, 210, 12, 15, 19, 20, 13, 27, 100, 200, 210]

您可以直接展平numpy数组,而无需复制数据:

flat_img = np.array(curimg).ravel()

相关问题 更多 >