2値化

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

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