0

レーザードットを追跡するAndroidアプリを作成しています。

RGB値を持つ配列にデータを入力しているだけです。次に、最も明るいピクセルを探します。

次のカメラパラメータを使用しています:

 parameters.setPreviewSize(320, 240);
 parameters.setPreviewFrameRate(10);
 parameters.setSceneMode(Camera.Parameters.SCENE_MODE_FIREWORKS);
 parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);

レーザー ドットがカメラからより短い距離にある場合、結果は良好です。しかし、レーザー ドットが光源から遠すぎたり近すぎたりすると、問題が生じます。

より良い解決策はありますか?

OpenCV ライブラリを使用する必要がありますか?

4

1 に答える 1

1

最良の結果を得るには、基準を変更してください。最も明るいピクセルを探す代わりに、「最も赤い」ピクセルを見つけようとします。レーザードットが赤い光を発すると仮定します。ピクセルの赤の値は次の方法で取得できます。

Color.red(pixel);

また

pixel<<8;
pixel>>>24;

編集

白く明るい光は、依然として大きな赤の値を持っています。フィルタリングを強化するには、緑と青のしきい値を設定します。ピクセルのこれらの値がしきい値を超える場合、それらは純粋な赤よりも白である可能性が高いため、それらをスキップできます。

于 2012-09-02T14:46:59.077 に答える