Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C RGB 색상 모델을 HSV 색상 모델로 변경하는 프로그램

<시간/>

주어진 RGB 색상 범위는 정수 형태입니다. 작업은 RGB 색상 범위를 변환하여 적절한 HSV 색상을 찾는 것입니다.

RGB 색상 모델이란 무엇입니까

RGB 색상 모델은 Red, Green, Blue 3가지 색상으로 구성됩니다. RGB 모델은 디스플레이 기술에서 널리 사용되는 컬러 모델입니다. 이것은 디스플레이 장치에서 수백만 가지 다른 색상을 생성하기 위해 서로 다른 강도의 이 세 가지 색상을 추가하는 가법 모델입니다.

HSV 색상 모델이란 무엇입니까?

HSV 색상 모델은 HSB(Hue, Saturation, Brightness)라고도 하는 색조, 채도, 값으로 구성됩니다. HSV는 RGB 색상 모델의 대체 표현입니다. 인간의 시각이 색상 생성 속성을 인식하는 방식으로 정렬됩니다. 이 색상 모델은 자연스러운 색상 구성으로 인해 아티스트가 더 자주 사용합니다. HSV의 세 가지 속성은 덧셈과 뺄셈이 모두 가능합니다.

프로그램에서 해야 할 일

RGB 모델 값의 사용자로부터 입력을 받은 다음 HSV 색상 모델의 출력을 수학적으로 계산해야 합니다.

예시

입력:r =31, g =52, b =29출력:h s v =(114.782608, 44.230770, 20.392157)입력:r =129, g =88, 5, 8) .88, b =47출력:h.s0 v=0(30.s0 v=0) /사전> 

주어진 문제를 해결하기 위해 사용할 접근 방식 -

  • 빨강(r), 초록(g), 파랑(b)의 3가지 색으로 입력을 받습니다.
  • 모든 색상 값을 255로 나눕니다.
  • 이제 cmax, cmin 및 차이를 계산합니다.
  • 확인 -
    • cmax와 cmin이 0이면 Hue 또는 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이면 채도(s) =0입니다.
    • cmax가 0과 같지 않으면 Saturation(s) =(diff/cmax)*100
  • 값 계산 -
    • 값(v) =cmax *100

알고리즘

StartStep 1 -> 함수에서 float max(float a, float b, float c) Return (a> b)? (a> c ? a :c) :(b> c ? b :c)Step 2 -> 함수에서 float min(float a, float b, float c) Return (a  함수 int rgb_to_hsv(float r, float g, float b) 선언 float h, s, v Set r =r / 255.0 설정 g =g / 255.0 설정 b =b / 255.0 설정 cmax =max(r, g, b) 설정 cmin =min(r, g, b) 설정 diff =cmax-cmin 설정 cmax ==cmin이면 설정 h =0 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 cmax ==0 then, Set s =0 Else Set s =(diff / cmax) * 100 End Else 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 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  

출력

h s v=(107.441864, 100.000000, 84.313728)