2010-03-23 4 views

답변

5

을해야하기 때문에 파이썬 구현을 사용 coudn't. 그 도움이 될 것입니다 경우

이 링크는 몇 가지 예제 코드가 포함되어 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; 

변경 이미지 이름. 또한 같은 크기인지 확인하십시오.

3

은 cv :: subtract() 메소드를 사용합니다.

Mat img1=some_img; 
Mat img2=some_img; 

Mat dest; 

cv::subtract(img1,img2,dest); 

이는 (img1-img2)의 요소 단위 뺄셈을 수행합니다. 이미지는 일반적으로 부호없는 형식을 사용하여 저장되므로 대신 diff 또는 그냥 일반 빼기를 사용하는 것이 http://docs.opencv.org/modules/core/doc/operations_on_arrays.html

0

에 대한 자세한 내용을 찾을 수있는 것은 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 화상의 일부 화소 20-70 = -50, 50-80 = -30, 30-90 = -60 모두 부정적인 결과 0의 부호없는 값으로 전환되기 때문에, 값 [0,0,0]을 생성한다 모두 im1 - im2diff(im1, im2, diff)를 사용 im2위한 im1[70, 80, 90] 가치 [20, 50, 30]을 갖는 , 대부분의 경우, 당신이 원하는 것이 아닙니다. 방법 absdiff은 대신 모든 빼기의 절대 값을 계산하여보다 합리적인 [50,30,60]을 생성합니다.