如何将1位64x6x位图图像转换为1和0的数组?

时间:2017-04-30 03:58:41

标签: bash bitmap

我希望在Bash中这样做,如果可能的话。有问题的位图图像是64x64,只包含黑白像素,两者之间没有任何内容。我尝试用bash编写一个脚本,它可以以某种方式读取图像,并为图像中的每个像素返回1表示白色,0表示黑色。所以,输出看起来像这样:

01001001010001010101010...

这可以在Bash中完成吗?如果是这样,可以给出一些示例代码吗?

2 个答案:

答案 0 :(得分:2)

您可以使用ImageMagick + netpbm执行此操作,如下所示:

convert my.png -monochrome pnm:-|pnmtoplainpnm|tail -n+4|tr -d ' \n'

如果您的平台上出于任何原因没有netpbm

convert my.png -monochrome -compress none pnm:-|sed '1,2d;s/255/1/g'|tr -d ' \n'

我在这里使用“png”作为输入,但ImageMagick将接受各种输入位图格式: https://www.imagemagick.org/script/formats.php

<强>测试

my.png

enter image description here

%convert my.png -monochrome -compress none pnm:-|sed '1,2d;s/255/1/g'|tr -d ' \n'\
|fold -16

0000000000000000
0000000000000000
0000000000000000
0001111111111100
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000010000000
0000000000000000
0000000000000000

答案 1 :(得分:0)

尝试以下脚本:

import cv2

img = cv2.imread(r'/home/Bitmapfont.png')
grey_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

grey_img[grey_img !=255] = 0
grey_img[grey_img ==255] = 1

print grey_img

让我知道需要做出任何改变:)