PILで文字画像を抜き出す
初めてのPIL。
もっとカンタンに書けるかもしれないけど無理やり。
こんなデータから
白い部分を取り除いてこんなかんじにする
# -*- coding: utf-8 -*- from PIL import Image from numpy import * im = Image.open("test.jpg") # とりあえず配列にする pixel_array = array(im) x = [] y = [] for i in range(0, im.size[0]): for j in range(0, im.size[1]): # 白以外のピクセルを探索 # ここはもう少しゆるいしきい値でも良いと思う if pixel_array[i][j].tolist() != [255, 255, 255]: y.append(i) x.append(j) # x, yそれぞれの最大最小が白以外に初めて出る色。 # そのまま切るとジャストで切れちゃうから2ピクセルくらいのバッファを確保 buffer = 2 left = min(x) - buffer top = min(y) - buffer right = max(x) + buffer bottom = max(y) + buffer # 切り取って保存 cropped_im = im.crop((left, top, right, bottom)) cropped_im.save("cropped.jpg")
これで手書き文字認識とかもできるのかもしれないとちょっと夢が広がった。