pillow

8bitビットマップ(bmp)ファイルを1bit深度で2値化する

ee9king に投稿

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);

読み込み後、最初にグレースケールにしてあげる必要がある

2値のBMPモノクロ画像を作成する

ee9king に投稿

あることで、2値画像を作る必要があった。ここで言う2値画像とは、白黒のbmpファイルで、bit深さが1のものである。

openCVでbmpファイルを2値で保存すると、値が0と255だけになった絵になり見た目はできているが、これだと、後処理で使いにくかった。1と0の2つの値からなる、1bit=1画素のbmpファイルにしたい。

どうも、openCVのsaveではそれはできなさそうだった。pillowライブラリを使うと可能。