5

画像でいっぱいのフォルダーがあり、各画像には少なくとも4つの小さな画像が含まれています。Python PIL を使用して小さな画像を切り取って、すべて独立した画像ファイルとして存在させる方法を知りたいです。幸いなことに、1 つの定数があります。背景は白または黒のいずれかなので、必要だと推測しているのは、完全に黒または完全に白の行またはできれば列を検索して、これらの画像を切り取る方法です。画像の例を次に示します。 :

ここに画像の説明を入力

上の画像から、10 個の個別の画像があり、それぞれに数字が含まれています。前もって感謝します。

編集:いくつかの小さな画像の背景が、それらが含まれている画像の背景と同じ色であるという意味で、より現実的な別のサンプル画像があります。

ここに画像の説明を入力

出力は 13 個の個別の画像で、それぞれに 1 文字が含まれています

4

1 に答える 1

1

ラベル付けに scipy.ndimage を使用する:

import numpy as np
import scipy.ndimage as ndi
import Image

THRESHOLD = 100
MIN_SHAPE = np.asarray((5, 5))

filename = "eQ9ts.jpg"
im = np.asarray(Image.open(filename))
gray = im.sum(axis=-1)
bw = gray > THRESHOLD
label, n = ndi.label(bw)
indices = [np.where(label == ind) for ind in xrange(1, n)]
slices = [[slice(ind[i].min(), ind[i].max()) for i in (0, 1)] + [slice(None)]
          for ind in indices]
images = [im[s] for s in slices]
# filter out small images
images = [im for im in images if not np.any(np.asarray(im.shape[:-1]) < MIN_SHAPE)]
于 2012-10-11T10:02:01.543 に答える