1. 程式人生 > >《學習opencv》筆記——矩陣和圖像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

《學習opencv》筆記——矩陣和圖像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

-c soft wim names href include temp tdi con


矩陣和圖像的操作


(1)cvAnd函數

其結構


void cvAnd(  //將src1和src2按像素點取“位與運算”
	const CvArr* src1,//第一個矩陣
	const CvArr* src2,//第二個矩陣
	CvArr* dst,//結果矩陣
	const CvArr* mask = NULL;//矩陣經行像素點與的“開關”
);

程序實例

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

int main(int argc, char** argv)
{
	IplImage *src1, *src2,*src3;
	src1=cvLoadImage("1.jpg");
	src2=cvLoadImage("3.jpg");
	src3=cvLoadImage("4.jpg");


	cvAnd(src1,src2,src3);
	cvShowImage( "測試1", src1);
	cvShowImage( "測試2", src2);
	cvShowImage( "測試3", src3);
	cvWaitKey();
	return 0;
}

輸出結果
技術分享圖片
(2)cvAndS函數 其結構
void cvAndS(//使src1與value進行 位與運算
	const CvArr* src1,//第一個矩陣
	CvScalar value,//運算標量
	CvArr* dst,//結果矩陣
	const CvArr* mask = NULL;//運算開關
);

實例程序
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1, *src2,*src3;
	src1=cvLoadImage("1.jpg");
	src2=cvLoadImage("5.jpg");

	CvScalar cs;
	cs.val[1] = 100.0;
	cs.val[2] = 100.0;
	cs.val[0] = 100.0;
	cs.val[3] = 100.0;
	cvAndS(src1,cs,src1);
	cvShowImage( "測試1", src1);
	cvShowImage( "測試2", src2);

	cvWaitKey();
	return 0;
}

輸出結果
技術分享圖片


(3)cvAvg函數 其結構
CvScalar cvAvg(//求出src的平均像素值
	const CvArr* src,//目標矩陣
	const CvArr* mark = NULL//像素開關
);

實例代碼:我對上面那個機器貓的圖像使用
#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv)
{
	IplImage *src1;
	src1=cvLoadImage("1.jpg");

	CvScalar cs;
	
	cs = cvAvg(src1);

	cout<<cs.val[0] << endl;
	cout<<cs.val[1] << endl;
	cout<<cs.val[2] << endl;
	cout<<cs.val[3] << endl;

	getchar();
	return 0;
}

輸出結果
技術分享圖片

(4)cvAvgSdv函數 其結構
CvScalar cvAvg(//求像素平均值和標準差
	const CvArr* arr,//目標矩陣
	CvScalar* mean,//平均值
	CvScalar* std_dev,//標準差
	const CvArr* mark = NULL//像素開關
);

程序實例:依舊用的機器貓圖片
#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv)
{
	IplImage *src1;
	src1=cvLoadImage("1.jpg");

	CvScalar cs,cs1;
	
	cvAvgSdv(src1,&cs,&cs1);

	cout<<"平均值:"<<endl;
	cout<<cs.val[0] << endl;
	cout<<cs.val[1] << endl;
	cout<<cs.val[2] << endl;
	cout<<cs.val[3] << endl;
	cout <<endl;
	cout <<"標準差"<<endl;
	cout<<cs1.val[0] << endl;
	cout<<cs1.val[1] << endl;
	cout<<cs1.val[2] << endl;
	cout<<cs1.val[3] << endl;

	getchar();
	return 0;
}

輸出結果

技術分享圖片

to be continued

《學習opencv》筆記——矩陣和圖像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv