Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम आरजीबी रंग मॉडल को एचएसवी रंग मॉडल में बदलने के लिए

पूर्णांकों के रूप में आरजीबी रंग सीमा को देखते हुए; कार्य आरजीबी रंग श्रेणी को परिवर्तित करके इसके उपयुक्त एचएसवी रंग को खोजना है

RGB कलर मॉडल क्या है

RGB रंग मॉडल में तीन रंग लाल, हरा और नीला शामिल हैं। आरजीबी मॉडल एक रंग मॉडल है जिसका व्यापक रूप से प्रदर्शन प्रौद्योगिकियों में उपयोग किया जाता है; यह एक एडिटिव मॉडल है जिसमें हम डिस्प्ले डिवाइस पर लाखों अलग-अलग रंगों का उत्पादन करने के लिए अलग-अलग तीव्रता के इन तीन रंगों को जोड़ते हैं।

HSV कलर मॉडल क्या है?

HSV रंग मॉडल में Hue, Saturation, Value को HSB (Hue, Saturation, Brightness) के रूप में भी जाना जाता है। HSV RGB रंग मॉडल का वैकल्पिक प्रतिनिधित्व है। यह इस तरह से संरेखित है कि मानव दृष्टि रंग बनाने की विशेषताओं को कैसे मानती है। यह रंग मॉडल अक्सर कलाकारों द्वारा इसकी प्राकृतिक रंग योजना के कारण उपयोग किया जाता है। HSV के तीन गुण योगात्मक और घटाव दोनों हो सकते हैं।

कार्यक्रम में हमें क्या करना है

हमें आरजीबी मॉडल मूल्यों के उपयोगकर्ता से इनपुट लेना होगा और फिर गणितीय रूप से एचएसवी रंग मॉडल में आउटपुट की गणना करनी होगी।

उदाहरण

इनपुट:आर =31, जी =52, बी =29आउटपुट:एच एस वी =(114.782608, 44.230770, 20.392157) /पूर्व> 

दी गई समस्या को हल करने के लिए हम जिस दृष्टिकोण का उपयोग करेंगे -

  • इनपुट को 3 रंगों में लेना लाल (आर), हरा (जी) और नीला (बी)।
  • सभी रंग मानों को 255 से विभाजित करना।
  • अब cmax, cmin और अंतर की गणना करें।
  • जांचें -
    • यदि सीमैक्स और सेमीमिन 0 के बराबर है, तो ह्यू या एच 0 होगा।
    • यदि cmax लाल (r) के बराबर है तो ह्यू (h) =(60 * ((g – b) / diff) + 360)% 360।
    • यदि cmax हरा (g) के बराबर है तो ह्यू (h) =(60 * ((b - r) / diff) + 120)% 360.
    • यदि सीमैक्स ब्लू (बी) के बराबर है तो ह्यू (एच) =(60 * ((आर – जी) / डिफ) + 240)% 360।
  • संतृप्ति का पता लगाने के लिए हम जाँच करेंगे −
    • यदि cmax =0 तो संतृप्ति (s) =0.
    • यदि cmax शून्य के बराबर नहीं है तो संतृप्ति (s) =(diff/cmax)*100
  • मूल्य गणना -
    • मान (v) =cmax *100

एल्गोरिदम

स्टार्टस्टेप 1 -> फंक्शन में फ्लोट मैक्स (फ्लोट ए, फ्लोट बी, फ्लोट सी) रिटर्न (ए> बी)? (ए> सी? ए:सी):(बी> सी? बी:सी) चरण 2 -> समारोह में फ्लोट मिनट (फ्लोट ए, फ्लोट बी, फ्लोट सी) रिटर्न (ए <बी)? (ए <सी? ए:सी):(बी <सी? बी:सी) चरण 3 -> समारोह में int rgb_to_hsv (फ्लोट आर, फ्लोट जी, फ्लोट बी) घोषित फ्लोट एच, एस, वी सेट आर =आर / 255.0 सेट जी =जी / 255.0 सेट बी =बी / 255.0 सेट सीमैक्स =अधिकतम (आर, जी, बी) सेट सीमिन =मिनट (आर, जी, बी) सेट डिफ =सीमैक्स-सेमिन अगर सीमैक्स ==सेमीिन तो, सेट एच =0 समाप्त करें यदि अन्यथा cmax ==r तो, सेट h =fmod ((60 * ((g - b) / diff) + 360), 360.0) अन्य समाप्त करें यदि cmax ==g तो, सेट h =fmod ( (60 * ((b - r) / diff) + 120), 360.0) समाप्त करें यदि अन्यथा cmax ==b तो, सेट h =fmod ((60 * ((r - g) / diff) + 240), 360.0) अन्य समाप्त करें यदि cmax ==0 तो, सेट s =0 समाप्त यदि अन्य सेट s =(diff / cmax) * 100 अंत अन्य v =cmax * 100; प्रिंट h, s, v चरण 4 -> int main(int argc, char const *argv[]) घोषित करें और आरंभ करें r =45, g =215, b =0 कॉल फ़ंक्शन rgb_to_hsv(r, g, b)Stop

उदाहरण

#include #include फ्लोट मैक्स (फ्लोट ए, फ्लोट बी, फ्लोट सी) {रिटर्न ((ए> बी)? (ए> सी? ए:सी):(बी> सी? बी:सी));}फ्लोट मिनट (फ्लोट ए, फ्लोट बी, फ्लोट सी) {रिटर्न ((ए <बी)? (ए <सी? ए:सी):(बी <सी? बी:सी) );}int rgb_to_hsv(float r, float g, float b) {// R, G, B मानों को 255 // से विभाजित किया जाता है ताकि 0..255 से 0..1 की सीमा बदली जा सके:फ्लोट h, s, वी; आर / =255.0; जी / =255.0; बी / =255.0; फ्लोट सीमैक्स =अधिकतम (आर, जी, बी); // अधिकतम आर, जी, बी फ्लोट सेमीिन =मिनट (आर, जी, बी); // न्यूनतम आर, जी, बी फ्लोट अंतर =सीमैक्स-सेमिन; // cmax और cmin का अंतर। अगर (सीमैक्स ==सेमी) एच =0; और अगर (सीमैक्स ==आर) एच =एफएमओडी ((60 * ((जी - बी) / अंतर) + 360), 360.0); और अगर (सीमैक्स ==जी) एच =एफएमओडी ((60 * ((बी - आर) / अंतर) + 120), 360.0); और अगर (सीमैक्स ==बी) एच =एफएमओडी ((60 * ((आर - जी) / अंतर) + 240), 360.0); // अगर सीमैक्स बराबर शून्य अगर (सीमैक्स ==0) एस =0; अन्य s =(diff / cmax) * 100; // गणना वी वी =सीमैक्स * 100; प्रिंटफ ("एच एस वी =(% एफ,% एफ,% एफ) \ n", एच, एस, वी); वापसी 0;}//मुख्य कार्यमुख्य (int argc, char const *argv[]) { int r =45, g =215, b =0; rgb_to_hsv (आर, जी, बी); वापसी 0;}

आउटपुट

h s v=(107.441864, 100.00000, 84.313728)

  1. सैमसंग कीबोर्ड का रंग बदलने के 4 तरीके

    सैमसंग कीबोर्ड, जो गैलेक्सी फोन पर पहले से इंस्टॉल आता है, को कई तरह से अनुकूलित किया जा सकता है। आप इसका आकार, पारदर्शिता, लेआउट शैली, फ़ॉन्ट आकार, मोड और बहुत कुछ बदल सकते हैं। इसके अलावा, सैमसंग आपको कीबोर्ड का रंग भी बदलने देता है। हम सभी जानते हैं कि डिफ़ॉल्ट सफेद-ग्रे संयोजन कई बार उबाऊ हो सकत

  1. विंडोज 10 में टास्कबार का रंग कैसे बदलें

    विंडोज 10 को पसंद करने वाले उपयोगकर्ताओं में से एक कारण उनकी आवश्यकताओं और सौंदर्यशास्त्र के अनुरूप इसकी अनुकूलन क्षमता है। वॉलपेपर बदलने जैसी सेटिंग्स से लेकर उच्चारण रंग चुनने तक, विंडोज 10 बहुत सारे विकल्प प्रदान करता है। स्टार्ट मेन्यू और टास्कबार, यूआई के दो सबसे अधिक एक्सेस किए जाने वाले तत्वो

  1. Windows 11 में टास्कबार का रंग कैसे बदलें?

    क्या आप टास्कबार पर एक ही रंग से ऊब चुके हैं? इसके बारे में चिंता न करें! सीपीयू गाइड आपके लिए टास्कबार का रंग बदलने का सबसे अच्छा ट्यूटोरियल लाता है। आज सीपीयू गाइड आपको दिखाएगा कि विंडोज 11 पर टास्कबार का रंग कैसे बदलना है, साथ ही एक्सेंट कलर्स की व्याख्या भी करता है। तो चलिए शुरू करते हैं,