C++ 改变h值的颜色

C++ 改变h值的颜色,c++,opencv,hsv,C++,Opencv,Hsv,我从BGR2HSV设置了我的面具。我有我的形象: 如何更改面具中的白色?所以我想把白色部分换成其他颜色 Mat mask; mask = imread("C:\\Users\\...\\Desktop\\...\\mask.png"); if (!img.data) { cout << "Could not find the image"; return -1; } cvtColor(mask, mask, COLOR_BG

我从BGR2HSV设置了我的面具。我有我的形象:

如何更改面具中的白色?所以我想把白色部分换成其他颜色

Mat mask;
mask = imread("C:\\Users\\...\\Desktop\\...\\mask.png");
if (!img.data)
{
    cout << "Could not find the image";
    return -1;
}

cvtColor(mask, mask, COLOR_BGR2HSV);



cvtColor(mask, mask, COLOR_HSV2BGR);


imshow("Ergebnis", mask);
waitKey(0);
Mat掩模;
mask=imread(“C:\\Users\\…\\Desktop\\…\\mask.png”);
如果(!img.data)
{

cout在两个
cvtColor
函数之间,您需要使用将图像拆分为其3个通道。查看,将S通道设置为0,并在[0-180]之间选择一个H值。然后,将通道返回

cv::Mat hsv=mask.clone();//来自您的代码
std::载体hsv_-vec;
cv::分割(hsv,hsv_-vec);
cv::Mat&H=hsv_vec[0];
cv::Mat&S=hsv_vec[1];
cv::Mat&V=hsv_vec[2];
S=0;
掩码=(V>10);//原始图像中的非零像素
H(mask)=此处的值;//H在OpenCV中介于0-180之间
合并(hsv_vec,hsv);
mask=hsv;//根据您的代码

作为一个旁注,我建议使用方便的变量名称。< /P>我使用Python而不是C++,所以我不能共享任何代码。因为你正在寻找白色像素来改变,在HSV中,V是255。所以找到第三值=255的像素,然后将第一个值设置为你想要的任何H。