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

In Python, how can I convert a RGB array to binary and get the most significant 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 数组转换为二进制并获取最高有效位。

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

img_b_blue_bin = map(bin, img_b_blue)

但它以字符串形式出现,格式为“0b11110001”。 有一种方法可以在没有 'b' 的情况下使用 map 并转换为二进制文件吗?我怎样才能得到最高有效位?

您可以通过右移 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? 了解它如何处理单个整数。