在 Python 中,如何将 RGB 数组转换为二进制并获得最高有效位?



我使用 scipy 读取图像并像这样提取 RGB 数组

img_b = misc.imread('google.png')
img_b_blue = img_b[:, :, 0]
img_b_blue = img_b_blue.ravel()

现在我需要将img_b_blue数组转换为二进制并获取最高有效位。

我可以使用地图进行转换:

img_b_blue_bin = map(bin, img_b_blue)

但它以字符串的形式出现,格式为"0b11110001"。 有没有办法使用map并在没有"b"的情况下转换为二进制?我怎样才能获得最重要的位?

您可以通过右移 7 位来获得最高有效位。结果是一个整数数组。

img_b_blue_bin = img_b_blue >> 7

或者,在您的用例中可能更清楚的是与 128 进行比较。高=白,低=黑。结果是一个布尔数组。

img_b_blue_bin = img_b_blue >= 128

类似地,可以使用(x >> n) & 1找到(n+1)个最低有效位,例如第二个最有效位:

img_b_blue_2nd_msb = (img_b_blue >> 6) & 1

最低有效位:

img_b_blue_lsb = img_b_blue & 1

请参阅如何从 int 获取单个位?了解它如何对单个整数工作。

最新更新