我有一个图像 (cv::Mat) 和一个可以看作蒙版的 ROI。我想显示混合了 ROI 的原始图像。
我的蒙版比我的原始图像小:每个元素代表图像中的一个块。假设我的面具是这样的(注意我的面具不是矩形)
0 0 1
1 1 1
0 0 0
然后我想让 (mask == 1) 的部分保持不变,其余部分与颜色混合。这是我的代码
cv::Mat blocks = image.clone;
uint npixcol = 32;
uint npixrow = 32;
for (uint ri = 0; ri < 480; ++ri)
for (uint ci = 0; ci < 640; ++ci)
{
if (mask[ri * 640 + ci])
cv::rectangle(blocks, cv::Rect(ci * npixcol, ri * npixrow, npixcol, npixrow), cv::Scalar(0, 0, 0), CV_FILLED, 8, 0);
}
cv::addWeighted(image, 0.5, blocks, 0.5, 0, image, -1);
如果没有额外的“克隆”命令,我怎么能做到这一点,因为那不是很高效......
使其更清晰;这是我想要的一个例子(颜色并不重要)!