イメージ (cv::Mat) とマスクとして表示できる ROI があります。元の画像に ROI をブレンドして表示したいと考えています。
私のマスクは元の画像よりも小さく、各要素は画像内のブロックを表しています。私のマスクがこれだとします(私のマスクは長方形ではないことに注意してください)
0 0 1
1 1 1
0 0 0
次に、(マスク== 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);
余分な「クローン」コマンドを使用せずにこれを行うにはどうすればよいですか?それはあまりパフォーマンスが高くないためです...
より明確にするために; これは私が欲しいものの例です (色はあまり重要ではありません)!