在Python中,如何将RGB数组转换为二进制并获得最重要的位?

时间:2017-04-08 20:30:03

标签: python arrays binary rgb bit

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

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

现在我需要将img_b_blue数组转换为二进制并获得最重要的位。

我可以使用map转换:

img_b_blue_bin = map(bin, img_b_blue)

但它以格式为'0b11110001'的字符串形式出现。 这是一种使用map并转换为二进制而没有'b'的方法?我怎样才能得到最重要的一点?

1 个答案:

答案 0 :(得分:2)

您可以通过右移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

请参阅How am I getting a single bit from an int?了解单个整数的工作原理。