픽셀의 r, g, b 값을 h, s 및 v 값으로 변환하기 위해 수학적 계산을 사용했습니다. 어떻게이 h, s 및 v 값을 사용하여 이미지를 만들고 imshow ("HSV", hsv_image)를 사용하여 이미지를 표시 할 수 있습니까?내가 h, s, v 값을 가지고 있다면 OpenCV에서 매트 이미지를 만드는 방법은?
답변이 파이썬을 사용하는 것이 좋지만 C++ 인 경우에도 괜찮습니다.
픽셀의 r, g, b 값을 h, s 및 v 값으로 변환하기 위해 수학적 계산을 사용했습니다. 어떻게이 h, s 및 v 값을 사용하여 이미지를 만들고 imshow ("HSV", hsv_image)를 사용하여 이미지를 표시 할 수 있습니까?내가 h, s, v 값을 가지고 있다면 OpenCV에서 매트 이미지를 만드는 방법은?
답변이 파이썬을 사용하는 것이 좋지만 C++ 인 경우에도 괜찮습니다.
당신은 RGB 이미지가있는 경우 다음 단지
cvtColor(img_rgb,img_hsv,CV_RGB2HSV);
을이 당신이 원하는 무엇인가? 당신이 원하는 무엇
편집
for(int row=0;row<height;row++)
{
for(int col=0;col<width;col++)
{
Vec3b data = image_rgb.at<Vec3b>(row,col);
Vec3b data_hsv;
data_hsv[0] = // process red channel of pixel with data[0]
data_hsv[1] = // process green channel of pixel with data[1]
data_hsv[2] = // process blue channel of pixel with data[2]
image_hsv.at<Vec3b>(row,col)[0] = data_hsv[0];
image_hsv.at<Vec3b>(row,col)[1] = data_hsv[1];
image_hsv.at<Vec3b>(row,col)[2] = data_hsv[2];
}
}
는 merge()입니다. C++에서 :
// Assuming you have the H, S, and V images
std::vector<cv::Mat> channels;
channels.push_back(h);
channels.push_back(s);
channels.push_back(v);
cv::Mat hsv;
cv::merge(channels, hsv);
// Now you can display it
cv::imshow("HSV", hsv);
실제로 저는 inbuilt opencv 함수를 사용하지 않고 수학 공식을 사용하여 변환하려고합니다. – nisargthakkar