2013-06-05 115 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

回答

相關問題