在处理灰度图片时,读取了一个int16的数组,想把该数组转换成8位数组。
直接用np.int8() 是抛弃了二进制的前8位,与计算结果不符。
但是对数组做运算时出现了下面代码的问题
import numpy as np
a = np.array([32767,32765,1044,254],'int16')
print('方法1:')
b = (a*255)//32767
print(b)
print(b.dtype)
print('方法2:')
for i in range(len(a)):
a[i] = a[i]*255//32767
print(a)
上面代码输出结果:
方法1:
[ 0 0 0 -1]
int16
方法2:
[255 254 8 1]
方法二的输出是正确的,但是图片数据很大,用for循环的方法太慢了,请问各位有我哪里出了错误吗?除了循环还有其他方法吗?