2010-03-23 201 views

回答

5

使用​​到你的圖像加載到內存中,然後使用Sub方法。

此鏈接包含一些示例代碼,如果這將有助於:http://permalink.gmane.org/gmane.comp.lib.opencv/36167

+0

我會盡力的,我的朋友。謝謝 – marionmaiden

+0

這個答案誕生過時了:) [DatChu答案](http://stackoverflow.com/a/2549246/2436175)是現今唯一有效的答案。 – Antonio

+1

第一個鏈接超時,第二個鏈接已死。 – Twonky

13
#include <cv.h> 
#include <highgui.h> 

using namespace cv; 

Mat im = imread("cameraman.tif"); 
Mat im2 = imread("lena.tif"); 

Mat diff_im = im - im2; 

改變形象的名字。還要確保它們具有相同的尺寸。

0

更多的細節,而不是使用diff或只是簡單的減法的im1-im2我寧願建議OpenCV的方法cv::absdiff

using namespace cv; 
Mat im1 = imread("image1.jpg"); 
Mat im2 = imread("image2.jpg"); 
Mat diff; 
absdiff(im1, im2, diff); 

由於圖像是使用未簽名的格式通常存儲的減法方法@Dat和@ ssh99將會消除所有的負面差異。例如,如果一個BMP圖像的一些像素具有im1[70, 80, 90]im2[20, 50, 30],同時使用im1 - im2diff(im1, im2, diff)將產生值[0,0,0],由於20-70 = -5050-80 = -3030-90 = -60和所有陰性結果將被轉換成的0無符號的值,其在大多數情況下,不是你想要的。方法absdiff將改爲計算所有減法的絕對值,從而產生更合理的[50,30,60]

相關問題