私は、ユーザーが与えたテトリスを白黒画像の中で認識するアプリケーションを作らなければなりません。私は配列に分析するためにイメージを読んだ。Cでテトリスピースを認識する
Cでこれをどうすればできますか?
私は、ユーザーが与えたテトリスを白黒画像の中で認識するアプリケーションを作らなければなりません。私は配列に分析するためにイメージを読んだ。Cでテトリスピースを認識する
Cでこれをどうすればできますか?
イメージを配列に読み込んだと仮定して、正規表現を使用するのはどうですか? 正確な形状マッチングは必要ありませんが、おおよそお試しください。
:ドキュメントファイルをダウンロードしました。正規表現がこの問題に適していないように、2D配列上のランダムな図形の中からランダムなパターンを特定する必要があります。それは悪いニュースです。良いニュースは、あなたの宿題は正確には画像処理ではなく、はるかに簡単です。
私はあなたのためのコードを作成しませんが、私はあなたに指示を与えることができますあなたの宿題です。
並列性を使用する必要があるため、4つのスレッドを作成し、各スレッドに異なる回転を割り当てて検索します。
あなたは最初からそれを実装したくないかもしれません(もちろん必須でない限り)。私は適切なライブラリを探すことをお勧めします。私はOpenCVがいいと聞いたことがありますが、マシンビジョン自体は何もしていないので、私はそれをテストしていません。
接続されたコンポーネントを検索します(つまり、深さ優先検索を使用します;効率が問題であれば再帰を避け、代わりに独自のスタックを使用します)。最大の連結成分はテトリス片でなければなりません。次に、形状、サイズ、または何らかの境界の説明を使用してそれをさらに解析できます。
「I、J、L、O、S、T、Z」と呼ばれるウィキペディアのテトリスの形を見ると、バウンディングボックスの辺の比率バイナリイメージとC)あなたがI(4:1)かO(1:1)のどちらを持っているかを明らかにします。他の形状は2:3です。
(J、L、S、T、またはZ)の残りの図形を検出するには、図形のエッジの長さと位置を境界ボックスのエッジに当てはめることができるように見えます。したがって、Tは3面に沿って3と1を示し、2面に沿って1と1を示します。位置を把握することで、JとL、SとをZから区別できます。
画像はどこから来たのですか?それらはどのように作成されますか?彼らはどんなサイズでも、あるいは一定のサイズがありますか? –
画像はどのように見えますか?写真?それとも完璧ですか?テトリスピースあたり4つの白いピクセルがありますか?より大きい?ピースの各ブロックは16x16ピクセルですか?画像の端に平行または回転しますか? –
すべての質問に答えるには、次のファイルを参照してください。http://ruifelgueiras.net76.net/Work/work.doc – rpf