numpy 的 使用 uint8 变成 bit 流

背景:

对于 numpy 来说,我们使用 uint8 类型,并没有 bit 类型。
因此,我抽取了一个函数,使用 unit8 类型,存储bit 类型的数据。

代码如下:


#!/usr/bin/python
import numpy as np

def convert_binary_to_bitmap(binary_im):
    """  将 uint8 类型的 binary 变成 bitmap """
    height = binary_im.shape[0]
    width = binary_im.shape[1]

    # binary image -> bitmap image
    flatten_im = binary_im.flatten()
    bitmap_im = np.zeros((int(width * height / 8)), dtype=np.uint8)
    for idx in list(range(0, flatten_im.shape[0], 8)):
        value = np.uint8(0)
        for idx_inner in range(8):
            value += flatten_im[idx + idx_inner] * 2 ** idx_inner
        bitmap_im[int(idx / 8)] = value
    return width, height, bitmap_im


if __name__ == '__main__':
    binary_im = np.eye(8, dtype=np.uint8)
    print(binary_im)

    _, _, bitmap = convert_binary_to_bitmap(binary_im)
    print(bitmap)
``

### 验证结果:
``
[[1 0 0 0 0 0 0 0]
 [0 1 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0]
 [0 0 0 1 0 0 0 0]
 [0 0 0 0 1 0 0 0]
 [0 0 0 0 0 1 0 0]
 [0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 1]]
 
[  1   2   4   8  16  32  64 128]
``
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值