关于cvAbsDiff的那些事

AbsDiff
计算两个数组差的绝对值

void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
src1
第一个原数组
src2
第二个原数组
dst
输出数组
函数 cvAbsDiff 计算两个数组差的绝对值

dst(I)c = abs(src1(I)c - src2(I)c).

所有数组必须有相同的数据类型相同的大小(或ROI大小)


程序:找茬^_^

// cvAbsDiff函数的使用.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "opencv2/opencv.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
	//创建三个窗口,用于分别显示图片
	cvNamedWindow("src1", CV_WINDOW_AUTOSIZE);
	cvNamedWindow("src2", CV_WINDOW_AUTOSIZE);
	cvNamedWindow("dst", CV_WINDOW_AUTOSIZE);

	
	IplImage* src1;
	IplImage* src2;
	IplImage* dst;
	//加载图片src1、src2
	src1= cvLoadImage("F://Opencv_picture//c.jpg");
	src2= cvLoadImage("F://Opencv_picture//d.jpg");
    //创建dst
	dst= cvCreateImage(cvGetSize(src1), src1->depth, src1->nChannels );
    //使用cvAbsDiff处理图像
	cvAbsDiff(src1, src2, dst);
     //显示图像
	 cvShowImage("src1", src1);
	 cvShowImage("src2", src2);
	 cvShowImage("dst", dst);

	 //暂停
	 cvWaitKey(0);
     //释放内存和销毁窗口
	 cvReleaseImage(&src1);
	 cvReleaseImage(&src2);
	 cvReleaseImage(&dst);
	 cvDestroyWindow("src1");
	 cvDestroyWindow("src2");
	 cvDestroyWindow("dst");

	return 0;
}

结果图:

关于cvAbsDiff的那些事_第1张图片

哈哈,找出两幅图的不同点啦!(其实那些相同的部分都应该为黑色的,这是因为我的两幅图不能完全重合)

PS: 输入的图像src1、src2的大小要一样大,否则会报错的!

你可能感兴趣的:(【C语言&Opencv】,vs2008,opencv,cvAbsDiff)