1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
#include <math.h>
 
using namespace cv;
using namespace std;
 
Mat img_color = imread("image.jpg", IMREAD_COLOR);
 
int main()
{
    int x, y;
    double max, min,delta;
    double h=0, s, v;
 
    x = 0;   //사진의 x좌표값
    y = 0;   //사진의 y좌표값
    
    uchar b = img_color.at<Vec3b>(y, x)[0];
    uchar g = img_color.at<Vec3b>(y, x)[1];
    uchar r = img_color.at<Vec3b>(y, x)[2];
 
    max = MAX(r, g);
    max = MAX(max, b);
    min = MIN(r, g);
    min = MIN(min, b);
 
    v = max;
    delta = v - min;
 
    if (v == 0.0)
        s = 0;
    else
        s = delta / v;
 
    if (s == 0)
        h = 0.0;
 
    else
    {
        if (r == v)
            h = (g - b) / delta;
        else if (g == v)
            h = 2 + (b - r) / delta;
        else if (b == v)
            h = 4 + (r - g) / delta;
 
        h *= 60;
 
        if (h < 0.0)
            h = h + 360;
    }
 
    printf("%d,%d,%d", r, g, b);
    printf("%d,%d,%d", h, s, v);
    
 
    return 0;
}
cs




이미지에 한 픽셀 찝어서 rgb랑 hsv값 출력해주는 코드인데

뭐가 잘못됬는지 출력값이 좀 이상하네


픽셀 좌표는 임의로 1,1로 고정해둠