OpenCV를 사용하여 다른 이미지에서 이미지 하나를 빼는 방법은 무엇입니까?openCV를 사용하여 다른 이미지에서 이미지 하나를 뺍니다.
시 : 나는 내가 Sub 방법을 사용 후, 메모리에 이미지를로드하는 데 사용 LoadImage
++ C에서 그것을 할
OpenCV를 사용하여 다른 이미지에서 이미지 하나를 빼는 방법은 무엇입니까?openCV를 사용하여 다른 이미지에서 이미지 하나를 뺍니다.
시 : 나는 내가 Sub 방법을 사용 후, 메모리에 이미지를로드하는 데 사용 LoadImage
++ C에서 그것을 할
을해야하기 때문에 파이썬 구현을 사용 coudn't. 그 도움이 될 것입니다 경우
이 링크는 몇 가지 예제 코드가 포함되어 http://permalink.gmane.org/gmane.comp.lib.opencv/36167
#include <cv.h>
#include <highgui.h>
using namespace cv;
Mat im = imread("cameraman.tif");
Mat im2 = imread("lena.tif");
Mat diff_im = im - im2;
변경 이미지 이름. 또한 같은 크기인지 확인하십시오.
은 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
에 대한 자세한 내용을 찾을 수있는 것은 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 - im2
및 diff(im1, im2, diff)
를 사용 im2
위한 im1
및 [70, 80, 90]
가치 [20, 50, 30]
을 갖는 , 대부분의 경우, 당신이 원하는 것이 아닙니다. 방법 absdiff
은 대신 모든 빼기의 절대 값을 계산하여보다 합리적인 [50,30,60]
을 생성합니다.
시도해 보겠습니다. 감사합니다 – marionmaiden
이 답변은 구식 태어났습니다 :) [DatChu 대답] (http://stackoverflow.com/a/2549246/2436175) 요즘에만 유효합니다. – Antonio
첫 번째 링크가 시간 초과되고 두 번째 링크가 죽었습니다. – Twonky