[英]Flip (reverse) image vertically given its string?
所以我有一串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數據類型快一個數量級 。 你應該看一下翻轉功能。 例:
>>> 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的圖像,因為實例化數組具有開銷....
>>> 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]])
說你有數組img中的圖像,然后做
img.reverse();
#also need to flip each row
for row in img:
row.reverse();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.