3

まず、この投稿を読みました。プログラムで画像の境界を検出する方法は? ただし、X/Y座標を見つけることについて、彼は少し異なる質問をしているようです。

特定の写真の周りに実線の境界線が存在するかどうかを調べようとしています。ImageMagick を使用して調査しましたが、これが最適なオプションですか? 私は画像関連のプログラミングをしたことがないので、この問題を解決できる単純な API があることを願っています。また、これらのライブラリの使用方法もかなり新しいので、アドバイスをいただければ幸いです。私は Python または Java でのソリューションを好みますが、何でも結構です。

ありがとう!

4

3 に答える 3

4

ここで関連する質問に答えました。これは、画像の周囲の境界線を削除し、PILを使用します。次のように、または境界線があるかどうかをTrue返すようにコードを簡単に調整できます。False

from PIL import Image, ImageChops

def is_there_a_border(im):
    bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
    diff = ImageChops.difference(im, bg)
    diff = ImageChops.add(diff, diff, 2.0, -100)
    bbox = diff.getbbox()
    return bbox != (0,0,im.size[0],im.size[1])

Trueただし、画像の片側だけに境界線がある場合でも、これは返されます。しかし、画像の周りに境界線があるかどうかを知りたいようです。これを行うには、最後の行を次のように変更します。

    return all((bbox[0], bbox[1], (bbox[0] + bbox[2]) <= im.size[0], 
                                  (bbox[1] + bbox[3]) <= im.size[1]))

これは、すべての辺に境界線がある場合にのみ true を返します。

例えば:

False:

ここに画像の説明を入力

False:

ここに画像の説明を入力

True:

ここに画像の説明を入力

于 2012-06-11T19:06:12.430 に答える
1

フラクセルの答えを見た後、境界線の幅を気にしない場合は、各辺の最も外側のピクセルを切り取って、色が均一であることを確認できることに気付きました。非常に高速である必要があります。背景色を0,0のピクセルの色に設定し、1,1をw-2、h-2にトリミングすると、残りの画像は正確に1色になります。

于 2012-06-11T21:01:32.757 に答える