bmp
BMPファイルの構造
BMPファイルは、印刷用データを作成する時によく使用していたが、最近ではe-Paperに画像データを送信する際に使用するデータを作成する場合にも使う。BMPファイルは大昔はMacOSで表示できなかったが現在は何も問題なく表示できるし編集も問題ない。ただ、Windowsのペイントのように1bit深度のモノクロ画像としての保存はできない。WindowsとOS/2のBMPがあるが、OS/2自体が死語だからWindowsだけ考えてたらいいでしょう
構造
ファイルヘッダ、情報ヘッダ、イメージデータの構成になっている。
Windows BMP | |
ファイルヘッダ | 14Bytes |
情報ヘッダ | 40Bytes + カラーパレット |
画像データ | 可変長 |
カラーパレットはない場合もある模様
8bitビットマップ(bmp)ファイルを1bit深度で2値化する
OpenCVで2値化すると、8bit深度データのまま(0/255)で保存される。1bit深度で保存するにはPILを使うしかないようだ。
白(255)以外のデータはすべて黒(0)とする、これは下記で実現できた(pointの中の構文は実はあまりよくわかってない)
from PIL import Image
import os
fname = "../../Desktop/AB.bmp";
a=Image.open(fname);
b=a.convert("L");
c=b.point(lambda x: 255 if x >= 254 else 0);
sname = os.path.splitext(fname)[0]+"-bit1.bmp";
c.convert("1").save(sname);
読み込み後、最初にグレースケールにしてあげる必要がある