【opencv&VS2008】關於cvAdd的那些事

cvAdd
計算兩個數組中每個元素的和

void cvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL );
src1
第一個原數組
src2
第二個原數組
dst
輸出數組
mask
操作的覆蓋面, 8-bit單通道數組; 只有覆蓋面指定的輸出數組被修改。
函數 cvAdd 加一個數組到別一個數組中:

dst(I)=src1(I)+src2(I) if mask(I)!=0

除覆蓋面外所有的數組必須有相同的類型相同的大小(或ROI尺寸)(不太懂,求解?)

程序:

// cvAdd的使用.cpp : 定義控制檯應用程序的入口點。
//

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

int _tmain(int argc, _TCHAR* argv[])
{
	//創建3個窗口
	cvNamedWindow("src1");
	cvNamedWindow("src2");
	cvNamedWindow("dst");
  
    //src1,src2,dst的聲明
	IplImage* src1;
	IplImage* src2;
	IplImage* dst;

	//加載圖像
	src1= cvLoadImage("F://Opencv_picture//x.jpg");
	src2= cvLoadImage("F://Opencv_picture//y.jpg");

	//dst的創建
	dst= cvCreateImage(cvGetSize(src1), src1->depth, src1->nChannels);

	//cvAdd
	cvAdd(src1, src2, dst, NULL);

    //顯示圖片
	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;
}
PS:src1和src2的大小要相等,不相等的話不能通過啊,所以我在原圖上加了小圖。
結果圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章