如何在OpenCV中"zero"图像的遮罩部分中的所有内容
How to "zero" everything within a masked part of an image in OpenCV
如果我有一个图像(IplImage 8位)和一个二进制掩码(也是一个相同大小的8位IplImage,其中每个像素的值都是0或255),我如何使图像中与掩码中值为零的像素对应的每个像素都为零,并且图像中与掩模中具有任何其他值(即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;
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 遮罩结构名称
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 在OpenCV中使用遮罩和ROI计算轮廓内浮器的图像像素值(例如平均值)
- OpenCV检测手部和比较图像
- 如何在OpenCV中"zero"图像的遮罩部分中的所有内容
- 如何在分析OpenCV图像时跳过遮罩
- 如何在不使用准备好的OpenCv函数的情况下在c++中实现对图像的不锐利遮罩
- 尝试从深度图像中提取手部轮廓时出现无效矩阵错误