如何增加RGB图像中的黄色像素

时间:2019-02-11 14:04:38

标签: opencv

我有一张存储在RGB颜色空间中的图像,我需要检测黄色像素并将每个像素增加5。 例如,如果我有一张带有黄色柠檬和棕色桌子的照片,则必须将柠檬变黄,并且桌子必须保持不变。 然后我必须保存新图像。

如何使用openCV和C ++执行它?

1 个答案:

答案 0 :(得分:3)

是的

  1. 将图像转换为HSV颜色空间。

  2. 计算HSV的黄色范围(从标量到标量)。

  3. 为黄色创建二进制掩码:inRange。

  4. 使用(3)中的掩码为您的HSV图像和cv :: Scalar(5,0,0)调用add添加

  5. 将结果转换为RGB。

示例:

cv::Mat rgbImg = cv::imread("src.jpg", cv::IMREAD_COLOR);
cv::Mat hsvImg;
cv::cvtColor(rgbImg, hsvImg, cv::COLOR_BGR2HSV);
cv::Mat threshImg;
cv::inRange(hsvImg, cv::Scalar(20, 100, 100), cv::Scalar(30, 255, 255), threshImg);
cv::imwrite("thresh.png", threshImg);
cv::add(hsvImg, cv::Scalar(5, 0, 0), hsvImg, threshImg);
cv::cvtColor(hsvImg, rgbImg, cv::COLOR_HSV2BGR);
cv::imwrite("res.png", rgbImg);

和图片: Source image: Binary mask: Result: