Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

RGBカラーモデルをHSVカラーモデルに変更するCプログラム


整数の形式で指定されたRGBカラー範囲。タスクは、RGB色範囲を変換して適切なHSV色を見つけることです

RGBカラーモデルとは

赤、緑、青の3色で構成されたRGBカラーモデル。 RGBモデルは、ディスプレイ技術で広く使用されているカラーモデルです。これは、異なる強度のこれら3つの色を追加して、ディスプレイデバイス上に数百万の異なる色を生成する加法モデルです。

HSVカラーモデルとは何ですか?

HSVカラーモデルは、色相、彩度、HSB(色相、彩度、明るさ)とも呼ばれる値で構成されます。HSVは、RGBカラーモデルの代替表現です。それは、人間の視覚が色作りの属性をどのように認識するかという方法で調整されています。このカラーモデルは、自然な配色のため、アーティストによってより頻繁に使用されます。 HSVの3つの属性は、加法混色と減法混色の両方になります。

プログラムでやらなければならないこと

RGBモデル値のユーザーから入力を受け取り、HSVカラーモデルで出力を数学的に計算する必要があります。

Input: r = 31, g = 52, b = 29
Output: h s v = (114.782608, 44.230770, 20.392157)
Input: r = 129, g = 88, b = 47
Output: h s v=(30.000000, 63.565895, 50.588238)

与えられた問題を解決するために使用するアプローチ-

  • 赤(r)、緑(g)、青(b)の3色で入力します。
  • すべての色の値を255で除算します。
  • ここで、cmax、cmin、および差を計算します。
  • チェック-
    • cmaxとcminが0の場合、色相またはhは0になります。
    • cmaxがRed(r)に等しい場合、Hue(h)=(60 *((g – b)/ diff)+ 360)%360。
    • cmaxがGreen(g)に等しい場合、Hue(h)=(60 *((b – r)/ diff)+ 120)%360。
    • cmaxがBlue(b)に等しい場合、Hue(h)=(60 *((r – g)/ diff)+ 240)%360。
  • 飽和状態を見つけるために、-
      をチェックします
    • cmax =0の場合、Saturation(s)=0です。
    • cmaxがゼロに等しくない場合、Saturation(s)=(diff / cmax)* 100
  • 値の計算-
    • 値(v)=cmax * 100

アルゴリズム

Start
Step 1 -> In function float max(float a, float b, float c)
   Return (a > b)? (a > c ? a : c) : (b > c ? b : c)
Step 2 -> In function float min(float a, float b, float c)
   Return (a < b)? (a < c ? a : c) : (b < c ? b : c)
Step 3 -> In function int rgb_to_hsv(float r, float g, float b)
   Declare float h, s, v
      Set r = r / 255.0
      Set g = g / 255.0
      Set b = b / 255.0
      Set cmax = max(r, g, b)
      Set cmin = min(r, g, b)
      Set diff = cmax-cmin
      If cmax == cmin then,
         Set h = 0
      End if
      Else if cmax == r then,
         Set h = fmod((60 * ((g - b) / diff) + 360), 360.0)
      End Else if
      Else if cmax == g then,
         Set h = fmod((60 * ((b - r) / diff) + 120), 360.0)
      End Else if
      Else if cmax == b then,
         Set h = fmod((60 * ((r - g) / diff) + 240), 360.0)
      End Else if
         If cmax == 0 then,
         Set s = 0
      End if
      Else
         Set s = (diff / cmax) * 100
      End Else
      v = cmax * 100;
      Print h, s, v
      Step 4 -> int main(int argc, char const *argv[])
      Declare and initialize r = 45, g = 215, b = 0
      Call function rgb_to_hsv(r, g, b)
Stop

#include <stdio.h>
#include <math.h>
float max(float a, float b, float c) {
   return ((a > b)? (a > c ? a : c) : (b > c ? b : c));
}
float min(float a, float b, float c) {
   return ((a < b)? (a < c ? a : c) : (b < c ? b : c));
}
int rgb_to_hsv(float r, float g, float b) {
   // R, G, B values are divided by 255
   // to change the range from 0..255 to 0..1:
   float h, s, v;
   r /= 255.0;
   g /= 255.0;
   b /= 255.0;
   float cmax = max(r, g, b); // maximum of r, g, b
   float cmin = min(r, g, b); // minimum of r, g, b
   float diff = cmax-cmin; // diff of cmax and cmin.
   if (cmax == cmin)
      h = 0;
   else if (cmax == r)
      h = fmod((60 * ((g - b) / diff) + 360), 360.0);
   else if (cmax == g)
      h = fmod((60 * ((b - r) / diff) + 120), 360.0);
   else if (cmax == b)
      h = fmod((60 * ((r - g) / diff) + 240), 360.0);
   // if cmax equal zero
      if (cmax == 0)
         s = 0;
      else
         s = (diff / cmax) * 100;
   // compute v
   v = cmax * 100;
   printf("h s v=(%f, %f, %f)\n", h, s, v );
   return 0;
}
//main function
int main(int argc, char const *argv[]) {
   int r = 45, g = 215, b = 0;
   rgb_to_hsv(r, g, b);
   return 0;
}

出力

h s v=(107.441864, 100.000000, 84.313728)

  1. Windows 10でタスクバーの色を変更する方法

    ユーザーが Windows 10 を好む理由の 1 つは、ニーズと美学に合わせてカスタマイズできることです。壁紙の変更などの設定から、アクセント カラーの選択まで、Windows 10 にはさまざまなオプションが用意されています。スタート メニューとタスク バーは、UI で最もアクセスの多い 2 つの要素であり、必要に応じてカスタマイズすることもできます。 Windows 10 のタスクバーの色を変更することができます。同じことについてのヒントを探している人のために、Windows 10 でタスクバーの色を変更する方法を教えてくれる役立つガイドを提供し、タスクバーの色の変更を実行できるようにし

  2. Windows 11 でタスクバーの色を変更する方法

    タスクバーの同じ色にうんざりしていませんか? 心配はいりません! CPU ガイド タスクバーの色を変更する方法に関する最高のチュートリアルをお届けします. 今日、CPU ガイドは、Windows 11 でタスクバーの色を変更する方法を紹介し、さらにアクセント カラーについても説明します。 それでは始めましょう、 Windows 11 の機能 Windows 11 は、これまでで最も期待されている Windows です。このウィンドウには、Windows 11 を非常に興味深いものにする最新の新機能が搭載されています。 Windows 11 には、ユーザーのエクスペリエンスを強