2013-06-05 73 views
3

我想创建一个屏蔽操作...将两张图像基于黑色和白色口罩

我有两个输入图像大小相同的,(做他们必须有渠道的相同深度/数?我想是任何东西,可能3个频道,CV_32FC3或灰色的......),我创建了一个面具,相同的尺寸(行列数)

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

面具与黑色区域创建的和白色。

我想创建一个新的CV ::垫,将有此搜索,其中面膜有1和图像2,其中面膜有0

我看着cv::filter2DcopyTo ...又看了看addWeighted,但我不想混合它们 - 每个图像的区域应该完全分开。 roi不会帮助 - 蒙版可能不包含矩形,而是包含一个或多个多边形。

我找不到我想要的东西。

是否有任何OpenCV函数结合我的图像基于掩码?或者我必须创建自己的循环遍历行和列?

谢谢。

+0

在新/编辑的情况下,你应该创建两个单独的口罩,MASK1和MASK2。将MASK1应用于IMAGE1,将MASK2应用于IMAGE2,使您得到RESULT1和RESULT2。现在您只需要将一个图像的一部分复制到另一个图像上。 – DevNull

+0

谢谢你,第二次参考你给我工作,我能够复制一个图像的结果,然后copyTo与蒙版第二个图像。我仍在玩它,当图像深度不一样时,我会断言错误......但这是我猜想的不同故事。 – Thalia

+0

没问题。最简单的解决方案是让两个合成图像具有相同的深度(理想情况下,两个图像都使用较高的深度),然后进行像素复制操作。一个简单的方法是:“对于MASK2中的每个黑色像素,将像素从RESULT2中的相同位置复制到RESULT1中的相同位置”。 – DevNull

回答

相关问题