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

C प्रोग्राम: RGB रंग मॉडल को HSV में बदलें

रंग मॉडल

मॉडलघटकसीमाविवरण
RGBलाल, हरा, नीला0-255योज्य मॉडल, डिस्प्ले के लिए
HSVह्यू, संतृप्ति, मूल्यH: 0-360°, S: 0-100%, V: 0-100%मानव दृष्टि के अनुरूप, कलाकारों द्वारा पसंदीदा

रूपांतरण एल्गोरिदम

  1. RGB मानों को 0-1 रेंज में सामान्य करें: r' = r/255, g' = g/255, b' = b/255
  2. न्यूनतम/अधिकतम खोजें: cmax = max(r',g',b'), cmin = min(r',g',b')
  3. diff = cmax - cmin की गणना करें
  4. ह्यू (H):
    • यदि cmax = cmin: H = 0
    • यदि cmax = r': H = (60° × ((g'-b')/diff) + 360°) % 360°
    • यदि cmax = g': H = (60° × ((b'-r')/diff) + 120°) % 360°
    • यदि cmax = b': H = (60° × ((r'-g')/diff) + 240°) % 360°
  5. संतृप्ति (S):
    • यदि cmax = 0: S = 0
    • अन्यथा: S = (diff/cmax) × 100%
  6. मूल्य (V): V = cmax × 100%

C प्रोग्राम

#include <stdio.h>
#include <math.h>

float max3(float a, float b, float c) {
    return fmaxf(a, fmaxf(b, c));
}

float min3(float a, float b, float c) {
    return fminf(a, fminf(b, c));
}

void rgb_to_hsv(float r, float g, float b) {
    // 0-1 रेंज में सामान्य करें
    r /= 255.0f;  g /= 255.0f;  b /= 255.0f;
    
    float cmax = max3(r, g, b);
    float cmin = min3(r, g, b);
    float diff = cmax - cmin;
    
    float h = 0, s = 0, v = 0;
    
    // ह्यू गणना
    if (diff == 0) {
        h = 0;
    } else if (cmax == r) {
        h = fmodf((60.0f * ((g - b) / diff) + 360.0f), 360.0f);
    } else if (cmax == g) {
        h = fmodf((60.0f * ((b - r) / diff) + 120.0f), 360.0f);
    } else if (cmax == b) {
        h = fmodf((60.0f * ((r - g) / diff) + 240.0f), 360.0f);
    }
    
    // संतृप्ति गणना
    if (cmax == 0) s = 0;
    else s = (diff / cmax) * 100.0f;
    
    // मूल्य गणना
    v = cmax * 100.0f;
    
    printf("HSV: H=%.2f°, S=%.2f%%, V=%.2f%%\n", h, s, v);
}

int main() {
    int r, g, b;
    printf("RGB मान दर्ज करें (0-255): ");
    scanf("%d %d %d", &r, &g, &b);
    
    if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
        printf("मान 0-255 के बीच होने चाहिए\n");
        return 1;
    }
    
    rgb_to_hsv(r, g, b);
    return 0;
}

नमूना आउटपुट

RGB मान दर्ज करें (0-255): 31 52 29
HSV: H=114.78°, S=44.23%, V=20.39%

RGB मान दर्ज करें (0-255): 129 88 47
HSV: H=30.00°, S=63.57%, V=50.59%

RGB मान दर्ज करें (0-255): 255 0 0
HSV: H=0.00°, S=100.00%, V=100.00%

RGB मान दर्ज करें (0-255): 0 255 0
HSV: H=120.00°, S=100.00%, V=100.00%

उलटा रूपांतरण (HSV से RGB)

void hsv_to_rgb(float h, float s, float v) {
    s /= 100.0f;  v /= 100.0f;
    float c = v * s;
    float x = c * (1 - fabsf(fmodf(h/60.0f, 2) - 1));
    float m = v - c;
    
    float r, g, b;
    if (h < 60)       { r=c; g=x; b=0; }
    else if (h < 120) { r=x; g=c; b=0; }
    else if (h < 180) { r=0; g=c; b=x; }
    else if (h < 240) { r=0; g=x; b=c; }
    else if (h < 300) { r=x; g=0; b=c; }
    else              { r=c; g=0; b=x; }
    
    printf("RGB: %d, %d, %d\n", 
           (int)roundf((r+m)*255), 
           (int)roundf((g+m)*255), 
           (int)roundf((b+m)*255));
}
  1. सैमसंग कीबोर्ड का रंग बदलने के 4 तरीके सैमसंग कीबोर्ड का रंग बदलने के 4 तरीके

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

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

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

  1. आसानी से अपने विंडोज 11 टास्कबार का रंग अनुकूलित करें: चरण-दर-चरण गाइड आसानी से अपने विंडोज 11 टास्कबार का रंग अनुकूलित करें: चरण-दर-चरण गाइड

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