我正在使用OpenCV,我的灰度图像是二进制掩码平滑操作的结果:
我想将此蒙版应用于给定的RGB图像,但使用带掩码选项的copyTo
方法会考虑蒙版的所有非零像素。但是,我感兴趣的是获得一个输出图像,其RGB像素值是由灰度掩模给出的因子按像素方式“缩放”的输入值。
我觉得这可以通过使用OpenCV的内置函数来实现,但到目前为止我找不到任何方法来做我想要的。
我知道如何以蛮力的方式从头开始,但我更愿意 - 如果可能的话 - 使用内置功能。</ p>
提前谢谢!
答案 0 :(得分:0)
正如@ api55指出的,我的问题的解决方案是:
cv::normalize
cv::multiply
特别是,规范化掩码的类型必须设置为CV_32F
(否则它将不起作用)。因此,输入图像也必须被转换(例如,使用convertTo
)。
示例代码:
cv::normalize(mask,mask,0.,1.,cv::NORM_MINMAX,CV_32F);
image.convertTo(image,CV_32F);
cv::multiply(image,mask,image);
image.convertTo(image,CV_8U); // Convert back the input image to the original type