"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एक रंग सरणी में निकटतम रंग कैसे खोजें?

एक रंग सरणी में निकटतम रंग कैसे खोजें?

2025-03-23 ​​पर पोस्ट किया गया
ब्राउज़ करें:609

] इस लेख में, हम इसे पूरा करने के लिए तीन अलग -अलग तरीकों का पता लगाएंगे:

How to Find the Closest Color in a Color Array?
दूरी मेट्रिक्स

१। ह्यू-केवल तुलना:

यह विधि केवल रंगों के रंग पर विचार करती है, संतृप्ति और चमक को अनदेखा करती है। ह्यू दूरी की गणना एक साधारण घटाव का उपयोग करके की जाती है, और निकटतम ह्यू न्यूनतम दूरी का पता लगाकर निर्धारित किया जाता है।

2। RGB दूरी:

यह विधि रंगों के RGB मानों के बीच सीधी दूरी को मापती है। रंग अंतर की गणना RGB स्थान में एक यूक्लिडियन दूरी के रूप में की जाती है, और निकटतम रंग इस अंतर को कम करके पाया जाता है।

३। भारित ह्यू, संतृप्ति, और चमक तुलना:

यह विधि एक भारित तरीके से ह्यू, संतृप्ति और चमक को जोड़ती है। कथित चमक की गणना की जाती है, और एक रंग संख्या की गणना संतृप्ति और चमक के आधार पर की जाती है। निकटतम रंग रंग अंतर और ह्यू दूरी के भारित योग को कम करके निर्धारित किया जाता है। int क्लोसेस्टकोलर 1 (सूची रंग, रंग लक्ष्य) { var hue1 = target.gethue (); var diffs = colors.select (n => gethuedistance (n.gethue (), hue1)); var diffmin = diffs.min (n => n); वापसी diffs.tolist ()। findIndex (n => n == diffmin); } // RGB दूरी की तुलना int ClosestColor2 (सूची रंग, रंग लक्ष्य) { var colordiffs = colors.select (n => colordiff (n, लक्ष्य))। मिनट (n => n); रंग लौटें। } // भारित ह्यू, संतृप्ति और चमक तुलना int ClosestColor3 (सूची रंग, रंग लक्ष्य) { फ्लोट hue1 = target.gethue (); var num1 = colornum (लक्ष्य); var diffs = colors.select (n => math.abs (colornum (n) - num1) gethuedistance (n.gethue (), hue1)); var diffmin = diffs.min (x => x); वापसी diffs.tolist ()। findIndex (n => n == diffmin); }

सहायक कार्य

// रंग चमक के रूप में: फ्लोट getBrightness (रंग c) => (C.R * 0.299F C.G * 0.587F C.B * 0.114f) / 256f; // दो hues के बीच की दूरी: फ्लोट गेथ्यूडिस्टेंस (फ्लोट HUE1, फ्लोट HUE2) => Math.abs (Hue1 - Hue2)> 180? 360 - math.abs (hue1 - hue2): math.abs (hue1 - hue2); // संतृप्ति और चमक से तौला गया: फ्लोट कोलोर्नम (रंग c) => c.getSaturation () * कारक getBrightness (c) * फैक्टरब्री; // RGB अंतरिक्ष में दूरी: int colordiff (रंग C1, रंग C2) => (int) Math.sqrt ((C1.R - ​​C2.R) * (C1.R - ​​C2.R) (C1.G - C2.G) * (C1.G - C2.G) (C1.B - C2.B) * (C1.B - C2.B) * (C1.B - C2.B) c2.b)); यदि ह्यू प्राथमिक विचार है, तो ह्यू-केवल तुलना पर्याप्त है। अधिक सामान्य रंग मिलान के लिए, आरजीबी दूरी या भारित ह्यू, संतृप्ति, और चमक तुलना के तरीके अधिक सटीक परिणाम प्रदान करते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3