Python 将8位二进制向量转换为1个灰度像素
我有大小为8的二进制向量,即8位向量为1和0。如何在python中将8位矢量转换为1位灰度像素Python 将8位二进制向量转换为1个灰度像素,python,image-processing,scipy,Python,Image Processing,Scipy,我有大小为8的二进制向量,即8位向量为1和0。如何在python中将8位矢量转换为1位灰度像素 v = numpy.array([1,0,1,0,1,0,1,0]) g = numpy.sum(2**numpy.arange(8)*v) 对于每个位,我们通过取2^0、2^1等来确定其权重。然后取权重向量与位向量的乘积,并求和 这假设第一位是最低有效位,通过反转范围,它可以是另一种方式: g = numpy.sum(2**numpy.arange(7,-1,-1)*v) 这两个选项都会为您提供
v = numpy.array([1,0,1,0,1,0,1,0])
g = numpy.sum(2**numpy.arange(8)*v)
对于每个位,我们通过取2^0、2^1等来确定其权重。然后取权重向量与位向量的乘积,并求和
这假设第一位是最低有效位,通过反转范围,它可以是另一种方式:
g = numpy.sum(2**numpy.arange(7,-1,-1)*v)
这两个选项都会为您提供范围为0-255的灰度值。如果您想将其设置为1位,可以设置阈值:
g = 1 if (numpy.sum(2**numpy.arange(7,-1,-1)*v) > 127) else 0
它是一个numpy向量吗?是的,它是一个numpy向量。我有向量[0.0.0.1.0.1.0.],当我设置阈值>127时,它显示为false。这意味着什么,因为我无法理解输出。True==1和False==0,我已经更新了示例,以实际显示0和1so。在这种情况下,它将永远不会>127,因为所有位都是0和1。所以输出总是错误的。这是否意味着我将无法创建灰度像素?当然可以。只需举前两个例子中的一个,它会给你一个介于0-255之间的答案。如果希望它在0-1之间,只需将它除以255即可。在我的例子中,每次数组的最大值为0,小于1,例如[0,0,0,1,1,0,0,0]。所以它永远不会超过127。那我该怎么办?