我使用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'的方法?我怎样才能得到最重要的一点?
答案 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?了解单个整数的工作原理。