invert_mask
是CV_8UC1,具有填充的轮廓(像素值255),而src
是灰度
我想反转src
中的遮罩下的颜色
除了遮罩下的区域外,输出图像看起来几乎正确。它们只是黑色的。看起来只有白色变成黑色,而黑色保持黑色
我不想对src
图像进行二值化,因为在此之后我必须对其进行一些处理
cv::absdiff(invert_mask, 255 - src, src);
src = 255 - src;
如果执行此操作,白色会转换为黑色,但黑色/灰色不会被更改
cv::absdiff(invert_mask, src, src);
答案 0 :(得分:0)
要实现所需的颜色替换,以下使用简单阈值处理的简短代码段应该可以解决问题:
cv::Mat src = cv::imread("src.png", cv::IMREAD_GRAYSCALE);
cv::Mat invert_mask = cv::imread("invert_mask.png", cv::IMREAD_GRAYSCALE);
cv::Mat textInMask = src.clone().mul(invert_mask / 255);
cv::threshold(textInMask, textInMask, 200, 255, cv::THRESH_BINARY);
cv::Mat output = src.clone() + invert_mask - textInMask;
输出图像:
质量可能会提高,这只是基本概念。