0

Nxtブリックの拡張機能をnetlogoに書き込もうとしています。れんがを接続するために、私はLejosを使用しています。カラーセンサーに問題があります。センサーの色を黄色:1、赤:2などの数値として返す簡単なメソッドを書きたいのですが、センサーモーターは常に同じ表面で異なるRGB色を返します。たとえば、黄色い紙の上に置きます。rgbの色は次のとおりです。[236 189 104]、[247 202 108] ..同じ表面色に対して一意のRGB番号を返す場合は、RGB色の範囲に従って分類します。各色の一意の番号。どうすればいいのか分かりますか?また、別のサーフェスでは実行されません。私の紙の色(黄色、青、緑)に対してこれを行うだけで十分です。ありがとう。

4

1 に答える 1

0

私があなたの意味を正しく理解していれば、メソッドjava.awt.Color.RGBtoHSBが役立つかもしれません。このようなJavaコード:

float[] hsb = Color.RGBtoHSB(red, green, blue, null);  
float hue = hsb[0];

(ここredで、、greenおよびblueはセンサー結果を含む変数です)

...適切な範囲を定義すれば、0から1の間の色の「色相」が得られます。floatこれは、黄色、青、緑、またはその他の色合いであるかどうかを確認するのに十分なはずです。これは、おおよそ次のようなものなるはずです。

Yellow: 0.1  < hue < 0.2
Blue:   0.5  < hue < 0.7
Green:  0.25 < hue < 0.45

...しかし、私の言葉を信じないでください!黄色い紙などの上にあるときにセンサーがどの範囲に留まるかを実験して確認する必要があります。

于 2012-05-23T22:01:43.803 に答える