سؤال

أحاول كتابة امتداد في netlogo لبنة Nxt.لتوصيل الطوب، أنا أستخدم Lejos.لدي مشكلة مع مستشعر الألوان.أريد أن أكتب طريقة بسيطة تُرجع لون المستشعر كرقم مثل اللون الأصفر:1، الأحمر: 2 الخ.لكن محرك المستشعر يُرجع دائمًا ألوان RGB مختلفة على نفس السطح.على سبيل المثال، وضعته على ورقة صفراء، ألوان rgb هي:[236189104] ،[247202108]..إذا كانت تُرجع أرقام RGB فريدة لنفس ألوان السطح، فسأصنفها وفقًا لنطاق ألوان RGB وأعطي رقمًا فريدًا لكل لون.هل لديك أي فكرة كيف يمكنني القيام بذلك؟كما أنه لن يعمل على أسطح مختلفة.فقط القيام بذلك لألوان الورق الخاصة بي (الأصفر والأزرق والأخضر) سيكون كافيًا بالنسبة لي.شكرًا.

هل كانت مفيدة؟

المحلول

إذا فهمت بشكل صحيح ما تقصده، الطريقة java.awt.Color.RGBtoHSB قد تساعدك.كود جافا مثل هذا:

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

(أين red, green و blue هي متغيرات تحتوي على نتيجة الاستشعار)

... سوف يعطيك "درجة" اللون الخاص بك كـ float بين 0 و1، وهو ما يجب أن يكون كافيًا لمعرفة ما إذا كان ظلًا للأصفر أو الأزرق أو الأخضر أو ​​أي شيء آخر، إذا قمت بتحديد النطاقات المناسبة.التي ينبغي أن تكون جداً تقريبيًا مثل:

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

...ولكن لا تأخذ كلامي على محمل الجد!يجب عليك التجربة لمعرفة النطاق الذي يبقى فيه المستشعر الخاص بك عند وضعه على ورق أصفر، وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top