如何在OpenCV中将图像的蒙版部分中的所有内容"归零"

Jac*_*win 10 c++ opencv mask

如果我有一个图像(IplImage 8位)和二进制掩码(也是一个相同大小的8位IplImage,其中每个像素的值都是0或255),我怎样才能制作出每个像素与掩码中具有零值的像素相对应的图像具有零值,并且图像中与掩模中具有任何其他值(即255)的像素相对应的每个像素具有与原始值相同的值.图片?

换句话说,"在掩模区域中"的任何东西都将保持其原始值,并且掩模区域之外的任何内容将变为零.

Ant*_*sto 21

最简单的方法,使用'Mat img'(图像被屏蔽,输入)和'Mat masked'(屏蔽图像,输出):

  img.copyTo(masked, mask)
Run Code Online (Sandbox Code Playgroud)

其中'Mat mask'是一个不一定是二进制的矩阵(copyTo认为零值的元素).蒙面可以是任何尺寸和类型; 如果需要,它会重新分配.

文档.


Abi*_*n K 8

你可以简单地使用bitwise_and()功能.

查看文档.