0
我使用數學計算將像素的r,g,b值轉換爲h,s和v值。我如何使用這些h,s和v值創建圖像並能夠使用imshow(「HSV」,hsv_image)顯示它們。如何在OpenCV中創建Mat圖像,如果我有h,s和v的值?
如果答案是使用python,會更好,但即使它是C++也可以。
我使用數學計算將像素的r,g,b值轉換爲h,s和v值。我如何使用這些h,s和v值創建圖像並能夠使用imshow(「HSV」,hsv_image)顯示它們。如何在OpenCV中創建Mat圖像,如果我有h,s和v的值?
如果答案是使用python,會更好,但即使它是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);
其實我想轉換使用一些數學公式,而不使用任何內置的opencv函數 – nisargthakkar