超複雑形ウィンドウPLUS 【概要】 『超複雑形ウィンドウ』強化版。 外側(複数)+内側(複数)の輪郭検出に対応しただけでなく、 他の全ての輪郭検出方法において処理速度を向上! アルゴリズムもより洗練されたものに。 【特徴】 三つの輪郭検出方法を用意しています。 ○追跡対象の外側(一つ)の輪郭のみを検出します。 ○追跡対象の外側(複数)の輪郭のみを検出します。 ○追跡対処の外側(複数)+内側(複数)の輪郭を検出します。 *=*=*=*=*=*=*=*=*=*= 操作方法 *=*=*=*=*=*=*=*=*=*= 【画像を準備する】 輪郭の追跡対象から除外する領域を唯一無二の色で塗りつぶして下さい。 追跡対象から除外する色(背景色)は四隅1ピクセルに設定して下さい。 四隅の色が一致しない場合は不正な画像と見なします。 【画像を選択する】 プログラムを起動すると「ファイルを開くダイアログボックス」が出現します。 8/24ビットのBMPファイルを選択して下さい。 ◆◆ DANGER! ◆◆ 正しく準備された画像を選択して下さい。 不正な画像を渡した場合はマシンが暴走する可能性もあります。 以下の画像は危険です。 ○追跡対象の領域が多すぎる(背景色が意図した領域以外で使われている)。 ○追跡対象または背景領域が複雑すぎる(1ピクセル幅しかない細い領域は危険です)。 【輪郭検出方法を変更する】 ・右クリックして下さい 「外側(複数)+内側(複数)」→「外側(複数)」→「外側(一つ)」の順にループします。 【ウィンドウを移動する】 ・ウィンドウを左クリックしてドラッグ 【プログラムを終了する】 ・Esc キーを押す *=*=*=*=*=*=*=*=*=*= 関数の説明 *=*=*=*=*=*=*=*=*=*= 【GetOutline 関数】 外側(一つ)の輪郭を検出します。 高速なのが利点。 【GetOutlineExPlus 関数】 外側(複数)+内側(複数)の輪郭を検出します。 ただし、内側の輪郭を検出するか、 全体として幾つまで輪郭を検出するかを引数で指示することのできる万能関数。 でも遅い。 *=*=*=*=*=*=*=*=*=*= 処理速度比較 *=*=*=*=*=*=*=*=*=*= GetOutline < GetOutlineExPlus(外側) < GetOutlineExPlus(外側と内側) 瞬間最高CPU使用率:2% / 11% / 27% (WinXP起動状態(0%)からの比較 / Pen4 2GHz / 画像:658×666ピクセル / リリース版を使用) 【処理速度低下の要因】 マスク編集に時間がかかるから(EditMask 関数)。 *=*=*=*=*=*=*=*=*=*= 『超複雑形ウィンドウ』との違い *=*=*=*=*=*=*=*=*=*= 名前は同じだが GetOutline 関数にも高速化が施されているので、 『超複雑形ウィンドウ』に実装されていたそれとは別物。 もはや旧版を使う意味はありません。 また、GetOutlineExPlsu 関数は GetOutlineEx 関数の機能も兼ね備えており、 同じ検出方法を用いるのならば GetOutlineExPlsu 関数の方が高速です。 したがって、GetOutlineEx 関数を使う意味もありません。 アルゴリズムにも改良が施されています。 今回は完成度が高いです。