我希望在Bash中这样做,如果可能的话。有问题的位图图像是64x64,只包含黑白像素,两者之间没有任何内容。我尝试用bash编写一个脚本,它可以以某种方式读取图像,并为图像中的每个像素返回1表示白色,0表示黑色。所以,输出看起来像这样:
01001001010001010101010...
这可以在Bash中完成吗?如果是这样,可以给出一些示例代码吗?
答案 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
%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
让我知道需要做出任何改变:)