グレースケールイメージの場合、イメージを元のイメージを構成するコンポーネントを含むサブイメージに分割する機能がPIL/Pillowにありますか?たとえば、pngのグレースケールイメージにブロックセットが含まれているとします。ここで、画像の種類は常に背景とのコントラストが高くなります。python/PILを使用してイメージコンポーネントを検索
私はopenCVを使いたくないので、一般的なBLOB検出が必要なだけで、Pillow/PILには既にそのようなことがあると考えていました。
グレースケールイメージの場合、イメージを元のイメージを構成するコンポーネントを含むサブイメージに分割する機能がPIL/Pillowにありますか?たとえば、pngのグレースケールイメージにブロックセットが含まれているとします。ここで、画像の種類は常に背景とのコントラストが高くなります。python/PILを使用してイメージコンポーネントを検索
私はopenCVを使いたくないので、一般的なBLOB検出が必要なだけで、Pillow/PILには既にそのようなことがあると考えていました。
はい、可能です。 PILでedge
検出アルゴリズムを使用できます。 サンプルコード:
from PIL import Image, ImageFilter
image = Image.open('/tmp/sample.png').convert('RGB')
image = image.filter(ImageFilter.FIND_EDGES)
image.save('/tmp/output.png')
sample.png:
output.png:PILを使用していない
OPがもっと矩形を抽出するにはどうしたらいいですか?どのように矩形が見つかった地域を特定しますか? – meetaig
が、私は思う一見の価値: I私がnumpy
arrのリストとしてインポートした画像ファイルのリストから始めてくださいAYS、と私はthreshold
が> 0
from skimage.measure import label, regionprops
import numpy as np
bool_array_list= []
for image in image_files:
bool_array = np.copy(image)
bool_array[np.where(bool_array > 0)] = 1
bool_array_list.append(bool_array)
img_region_list = []
それから私は、8方向の接続を使用して、異なる領域を識別するためにラベルを使用し、regionprops
は私に、サイズなどのメトリックの束を与えているブールバージョンのリストを作成しますと場所。
for item in bool_array_list:
tmp_region_list = regionprops(label(item,
connectivity=2
)
)
img_region_list.append(tmp_region_list)
あなたは正確に何をしたいですか?あなたのイメージはどのように見えますか?いくつかの追加情報を提供する必要があります。すでに試したことのあるコード例が理想的です。 – meetaig
PIL/Pillowにこれを実行する機能があるかどうかを具体的に質問しています。私は働くコードがないことを明確にしました。 – user1658296
魔法の 'do_what_i_want()'関数はありません。あなたはもっと精巧にする必要があります。一般に、コントラストが良いと言えば、しきい値処理から始めます。 'floodfill'のようなラベル付けアルゴリズムは、異なるブロブを識別することができます。そして、あなたはバウンディングボックスを計算することができます。 – meetaig