【问题标题】:Change color of h value更改 h 值的颜色
【发布时间】:2021-05-18 18:24:07
【问题描述】:

我从 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);

【问题讨论】:

  • 我使用 python 而不是 c++,所以我不能共享任何代码。因为您正在寻找要更改的白色像素,在 HSV 中这意味着 V 是 255。所以找到第三个值 == 255 的像素,然后将第一个值设置为您想要的任何 H

标签: c++ opencv hsv


【解决方案1】:

在两个cvtColor 函数之间,您需要使用split 将图像分成3 个通道。查看the conversion between RGB and HSV,将 S 通道设为 0 并选择 [0-180] 之间的 H 值。然后,merge 频道返回。

cv::Mat hsv = mask.clone(); // from your code
std::vector<cv::Mat> hsv_vec;
cv::split(hsv, hsv_vec);
cv::Mat &H = hsv_vec[0];
cv::Mat &S = hsv_vec[1];
cv::Mat &V = hsv_vec[2];
S = 0;
mask = (V > 10); // non-zero pixels in the original image
H(mask) = your_H_value_here; // H is between 0-180 in OpenCV
cv::merge(hsv_vec, hsv);
mask = hsv; // according to your code

作为旁注,我建议为变量使用方便的名称。

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 2019-06-28
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2021-04-21
    相关资源
    最近更新 更多