簡體   English   中英

使用OpenCv的Matrix運算(加減法)OpenCV C ++

[英]Using the Matrix operations of OpenCv (Addition and Subtraction) OpenCV C++

我使用openCV的addweighted功能將兩個圖像加在一起

addWeighted(ROI,1,watermark,0.5,0.0,ROI); 

但是,當我嘗試進行反向操作時,我會得到黑色斑點,而不是從結果圖像中刪除第二個圖像。

addWeighted(ROI,1,watermark,-0.5,0.0,ROI);

我也嘗試過使用減法,但是得到了相同的結果。 下圖描述了我在說什么。 請注意,我的算法無法正確檢測所有帶水印的區域,但是對於那些被正確檢測的區域,我無法從中減去水印。

在此處輸入圖片說明

如果你們能建議我如何做減法,將不勝感激。

謝謝。

根據addWeighted的文檔,您給watermark了一半的權重(您能解釋為什么嗎?),最后一個參數是深度類型...而不是數組...因此,如果watermarkROI的深度相同或為-1,則應該為-1。您放置了要放置的深度值...如果您在文檔中注意到最終值是飽和值...也就是說,如果它超過255,它將被拉低到255 ...所以難怪您是否減去您將不會獲得兩個確切的值。

**編輯:**為您I + 0.5W = R其中I是莉娜圖像, W是水印, R是合成圖像。 由於R在255以上被截斷,因此將R存儲在整數矩陣CV_32UC3 由於您使用的是OpenCV 2.1,因此最好通過掃描圖像而不是使用OpenCV API來執行加權加法。 這樣,您可以將R保存在一個整數矩陣中,該矩陣可以得到的最大值是(255 + 255),可以很容易地存儲它。 對於顯示,請使用uchar矩陣(被截斷的一個),對於逆向過程,請使用整數矩陣...

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM