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로 고정해둠
아 병신이었네 해결됨
Opencv 라이브러리에 변환해주는거 있지 않냐