如果我有一个图像(IplImage 8 位)和一个二进制掩码(这也是一个相同大小的 8 位 IplImage,其中每个像素的值都是 0 或 255),我怎样才能使每个像素在与掩码中值为 0 的像素对应的图像的值为零,并且图像中与掩码中具有任何其他值(即 255)的像素对应的每个像素都具有与原始值相同的值图片?
换句话说,“在遮罩区域内”的任何东西都将保持其原始值,而遮罩区域之外的任何东西都将变为零。
最简单的方法,使用“Mat img”(要屏蔽的图像,输入)和“Mat masked”(屏蔽的图像,输出):
img.copyTo(masked, mask)
其中“Mat mask”是一个不一定是二进制的矩阵(copyTo 考虑具有零值的元素)。蒙面可以是任何大小和类型;如果需要,它会重新分配。
请参阅文档。
您可以简单地使用bitwise_and()
函数。
与图像相乘或位和掩码。有一些 OpenCV 函数,但我不知道它们的 C 接口名称。
在 C++ 中:
Mat image, mask;
image = image * mask;
// or
image = image & mask;