我有一张存储在RGB颜色空间中的图像,我需要检测黄色像素并将每个像素增加5。 例如,如果我有一张带有黄色柠檬和棕色桌子的照片,则必须将柠檬变黄,并且桌子必须保持不变。 然后我必须保存新图像。
如何使用openCV和C ++执行它?
答案 0 :(得分:3)
是的
将图像转换为HSV颜色空间。
计算HSV的黄色范围(从标量到标量)。
为黄色创建二进制掩码:inRange。
使用(3)中的掩码为您的HSV图像和cv :: Scalar(5,0,0)调用add添加
将结果转换为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);