use*_*415 3 python arrays numpy image
我一直在使用嵌套for循环将RGB图像转换为Hex值的图像数组,但对于大图像来说它太慢了.有没有人知道一个快速的方法和/或一个可以帮助我切换回RGB和HEX的库?
编辑:@ragingSloth
这就是我提出的,但它对我需要的东西来说太慢了:
def rgb_to_hex(array):
(x, y, z) = array.shape
for v in range(0, x):
for u in range(0, y):
array[v, u] = int('%02x%02x%02x' % (array[v, u, 0], array[v, u, 1], array[v, u, 2]))
Run Code Online (Sandbox Code Playgroud)
字符串操作可能非常慢。直接的数学方法是:
array[v, u] = ((array[v, u, 0]<<16) + (array[v, u, 1]<<8) + array[v, u, 2])
Run Code Online (Sandbox Code Playgroud)
这将 RGB 表示形式的 3 个字节组合成一个 int:
>>> A = [123, 255, 255]
>>> B = (A[0]<<16) + (A[1]<<8) + A[2]
>>> B
8126463
>>> hex(B)
'0x7bffff'
Run Code Online (Sandbox Code Playgroud)
使用beaker的想法,你也可以消除双重for循环:
def tohex(array):
array = np.asarray(array, dtype='uint32')
return ((array[:, :, 0]<<16) + (array[:, :, 1]<<8) + array[:, :, 2])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1000 次 |
| 最近记录: |