基于黑白掩模合并两张图片

4

我想创建一个掩膜操作...

我有两个输入图像,大小相同(它们必须具有相同的深度/通道数吗?我希望可以是任何东西,可能是3个通道,CV_32FC3或灰度...),并且我创建了一个掩膜,大小也相同(行和列)。

cv::Mat mask = cv::Mat(image1.rows, image1.cols, CV_8UC1);

这个掩膜是由黑白区域创建的。

我想创建一个新的cv::Mat,在该矩阵中,当掩膜值为1时,将插入image1;当掩膜值为0时,将插入image2。

我查看了cv::filter2DcopyTo…还查看了addWeighted,但我不想将它们混合-每个图像的区域应完全分开。 roi无法帮助-掩膜可能不包含矩形,而是一个或多个多边形。

我找不到能够实现我想要的功能的函数。

是否有任何OpenCV函数可以根据掩膜组合我的图像?还是必须创建自己通过循环行和列?

谢谢。


在新/编辑的情况下,您应该创建两个单独的掩模,MASK1和MASK2。将MASK1应用于IMAGE1,将MASK2应用于IMAGE2,留下RESULT1和RESULT2。现在,您只需要将一幅图像的一部分复制到另一幅图像上即可。 - Cloud
谢谢,你给我的第二个参考资料起作用了,我能够将一个图像复制到结果中,然后使用掩码将第二个图像复制到其中。我还在尝试中,当图像深度不同时,我会得到断言错误...但这是另外一个故事了,我想。 - Thalia
我一直在尝试将1通道转换为3通道,但目前还没有太大的成功...我知道如何转换深度,并且我会为最低的图像创建一个与最高深度相同的临时变量。但是我仍在尝试将1通道转换为3通道...所以我很接近了 :-) 我已经查看了cv::merge和cvtColor。 - Thalia
1
一个灰度到RGB的转换可能是你正在寻找的:https://dev59.com/zGUq5IYBdhLWcg3wV_Ei - Cloud
谢谢,我之前尝试过,但并没有完全成功 - 但最终这个链接帮了我:https://dev59.com/dWLVa4cB1Zd3GeqPuDf9 我很开心 :-) - Thalia
显示剩余2条评论
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接