gpt4 book ai didi

python - 给定字符串垂直翻转(反转)图像?

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:31 25 4
gpt4 key购买 nike

所以我有一串RGBA图像数据,每个像素都是一个字节长。我也知道图像的 x 和 y 分辨率。现在我想以一种会导致图像垂直翻转或反转的方式编辑字符串,这意味着像素的第一“行”成为最后一行,反之亦然,对于所有其他“行”也是如此。有快速的方法吗?

最佳答案

要按字面意思做您想做的事,这是一种继续进行的方法:

>>> img = 'ABCDEFGHIJKL'
>>> x, y = 4, 3
>>> def chunks(l, n):
... for i in xrange(0, len(l), n):
... yield l[i:i+n]
...
>>> [row for row in chunks(img, x)]
['ABCD', 'EFGH', 'IJKL']
>>> ''.join(reversed([row for row in chunks(img, x)]))
'IJKLEFGHABCD'

但是,除非你有非常小的图像,否则你最好通过numpy ,因为这至少比 Cpython 数据类型快一个数量级。你应该看看 flipup功能。示例:

>>> A
array([[ 1., 0., 0.],
[ 0., 2., 0.],
[ 0., 0., 3.]])
>>> np.flipud(A)
array([[ 0., 0., 3.],
[ 0., 2., 0.],
[ 1., 0., 0.]])

编辑: 想添加一个完整的示例,以防您以前从未使用过 NumPy。当然,这种转换只对非 2x2 的图像有值(value),因为实例化数组会产生开销......

>>> import numpy as np
>>> img = [0x00, 0x01, 0x02, 0x03]
>>> img
[0, 1, 2, 3]
>>> x = y = 2
>>> aimg = np.array(img).reshape(x, y)
>>> aimg
array([[0, 1],
[2, 3]])
>>> np.flipud(aimg)
array([[2, 3],
[0, 1]])

关于python - 给定字符串垂直翻转(反转)图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com