2011-01-26 1 views
7

デスクトップアプリケーションを開発する必要があります。デスクトップスクリーンショットでロゴを探す

1.)さまざまなアプリケーションロゴ(背景透過)のリストがあります。 IE、FIREFOX、CHROME、PHOTOSHOPなど。

2.)ユーザーはデスクトップのスクリーンショットを撮り、画像を保存します。

3.)私のアプリケーションでは、スクリーンショットイメージ内のすべてのロゴを検索し、すべてのロゴが存在する場所と場所を確認する必要があります。

4)私はそれが働いて、OpenCVのを使用しますが、ユーザーはデスクトップの背景&は、スクリーンショットをキャプチャ変更したときにロゴの透明な領域は、デスクトップの背景のコンテンツを取得しているとして、それは働いていません。

誰かがこの仕事を行うためのオープンソースの商用ソフトウェアを提供できますか?

+2

実行中のプログラムをすべて見つけようとしているだけの場合は、スクリーンショットでロゴを探すのが最善の方法ではないかもしれません... – SWeko

+0

x appアイコンが存在するかどうかを調べる必要はありませんデスクトップ上に存在するかどうか、存在する場合はどの位置にあるか。 – Hoshin

答えて

8

これは、相互相関を使用して簡単に実行できます。

私の答えはthis questionです。

基本的に各アイコンの

  • デスクトップ画像と1枚のテンプレート画像とのスタート
  • は、デスクトップ画像とテンプレート画像にエッジ検出(例えば、ソーベル)を適用します。
  • 捨てて、元のデスクトップ画像やテンプレート、我々はエッジ検出画像に
  • を使うことになる原因は、あなたが通常
  • を同じようにテンプレートマッチングを行い、各テンプレート
    • のために、もはやそれを必要としません
    • 結果の最大値をしきい値します。しきい値を超えている場合は、そのポジションで一致します。それ以外の場合は一致しません。

あなたのアイコンがデスクトップ上に格子状に配列されている場合は、のみ、特定のグリッド位置をチェックして処理を高速化することができるかもしれません。あなたはまた、検索するためにどのアイコンを知ることによって、多くの時間を節約することができ

EDIT

。ファイルシステムにアクセスできない場合は、デスクトップに対応するディレクトリに*.lnkファイル(または他にも関心のある拡張子)を探してください(正確にはそれを覚えていないかもしれませんが、Windows7ではc:\users\misha\desktop)。それはあなたにあなたに何をアイコンがデスクトップにあることを伝えます。これにより、テンプレートマッチングを行う前にテンプレートの候補リストを短くすることができます。

+0

アイコンは一部の領域で中空になることがあります(その領域にエッジがないため)。この場合、デスクトップイメージのエッジイメージには余分なエッジが含まれます。 。 – Hoshin

+1

あなたのテンプレートにも中空部分があるので、これはうまくいくでしょう。自分で試してみてください。 – misha

0

私はあなたが使用しているツールに慣れていないんだけど、私はあなたがどちらかに持って推測している:

a)は、比較動作時のアイコン画像内の透明ピクセルを無視するようにプログラムを教えてください。

OR

b)の任意の色にすることができ、「ワイルドカード」としてアイコン画像に透明ピクセルを処理するようにプログラムを教えてください。

+0

あなたは正しいです。しかし、私は地域の能力との高速テンプレートマッチングのためのいくつかのアルゴリズムを探しています。私が自分自身を書いて各画像ブロックをチェックすると、時間がかかりすぎるでしょう。 Opencvは、デスクトップイメージで1つのロゴを見つけるために約10〜20ミリ秒かかる。 – Hoshin

2

私はmisha's answerが好きで、それはあなたのために働くべきだと思います。しかし、マップを試す前に、基準ロゴの透明ピクセルを均一に分散したランダムノイズに置き換えることはできません。これにより、透過ピクセルは、それらのピクセルのデスクトップ上に何があっても悪いものとして一致するため、一致する計算には無関係になります。

関連する問題