1.实现RGB到HSV的转换函数,函数声明:HSV RGB2HSV(COLORREF c)
函数功能:把COLORREF类对象c的颜色信息转换成一个HSV类对象返回。
代码:
#include<iostream>
#include<atlimage.h>
#include<cmath>
#include<algorithm>
using namespace std;
//RGB->HSV
class HSV //HSV类
{
public:
double H, S, V;
HSV() {}
HSV(double h, double s, double v) :H(h), S(s), V(v) {}
};
HSV RGB2HSV(COLORREF c)//RGB至HSV转换函数
{
//从COLORREF类对象c中获取颜色RGB值
BYTE R = GetRValue(c);
BYTE G = GetGValue(c);
BYTE B = GetBValue(c);
double H, S, V;
//转换公式
R = R / 255, G = G / 255, B = B / 255;
V = max(R, G, B);
if (V != 0)
{
S = (V - min(R, G, B)) / V;
if (V = R)
{
H = (60 * (G - B)) / V - min(R, G, B);
if (H < 0)
{
H = H + 360;
return HSV(H, S, V);
}
return HSV(H, S, V);
}
if (V = G)
{
H = 120 + ((60 * (B - R)) / (V - min(R, G, B)));
if (H < 0)
{
H = H + 360;