我使用 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 获取单个位?了解它如何对单个整数工作。