首页 > 其他 > 详细

《学习opencv》笔记——矩阵和图像操作——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize

时间:2014-06-08 10:30:12      阅读:375      评论:0      收藏:0      [点我收藏+]


矩阵和图像的操作


(1)cvMinManLoc函数

其结构


void cvMinMaxLoc(//取出矩阵中最大最小值
	const CvArr* arr,//目标矩阵
	double* min_val,//最小值
	double* max_val,//最大值
	CvPoint* min_loc = NULL,//最小值位置
	CvPoint* max_loc = NULL,//最大值位置
	const CvArr* mask = NULL//矩阵“开关”
);

实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;


int main() 
{ 
	double a[3][3] = 
	{    
		{1,2,3},
		{4,5,6},
		{7,8,9}
	};

	CvMat va = cvMat(3,3, CV_64FC1,a);

	cout<<"目标矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}

	double min_Val,max_Val;

	cvMinMaxLoc(&va,&min_Val,&max_Val);

	cout << "最小值为:" << endl;
	cout << min_Val << endl;

	cout << "最大值为:" << endl;
	cout << max_Val << endl;

	getchar();
	return 0;

}

输出代码


bubuko.com,布布扣


(2)cvMul函数

其结构


void cvMul(//两个矩阵对应元素相乘
	const CvArr* src1,//矩阵1
	const CvArr* src2,//矩阵2
	CvArr* dst,//结果矩阵
	double scale = 1//因子系数
);


实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;


int main() 
{ 
	double a[3][3] = 
	{    
		{1,2,3},
		{4,5,6},
		{7,8,9}
	};

	CvMat va = cvMat(3,3, CV_64FC1,a);

	double b[3][3] = 
	{    
		{2,1,2},
		{1,2,1},
		{2,1,2}
	};

	CvMat vb = cvMat(3,3, CV_64FC1,b);

	cout<<"目标矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}

	cout<<"因子矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&vb,i,j));
		cout << endl;
	}

	cvMul(&va,&vb,&va);

	cout<<"结果矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}

	getchar();
	return 0;

}

输出结果


bubuko.com,布布扣

(3)cvNot函数

其结构


void cvNot(//元素按位取反
	const CvArr* src,//目标矩阵
	CvArr* dst//结果矩阵
);

实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main() 
{
	IplImage *src1,*src2;
	src1=cvLoadImage("5.jpg");
	src2=cvLoadImage("7.jpg");
	cvNot(src1,src2);
	cvShowImage( "原图", src1);
	cvShowImage( "结果图", src2);
	cvWaitKey();
	return 0;
}

输出结果


bubuko.com,布布扣


(4)cvNorm函数

其结构


double cvNorm(//计算各种范式
	const CvArr* arr1,//矩阵1
	const CvArr* arr2 = NULL,//矩阵2
	int norm_type = CV_L2,//选择范式标量
	const CvArr* mask = NULL//矩阵“开关”
);


ps:arr2=NULL时,对于不同的norm_type由cvNorm()计算范式的公式


bubuko.com,布布扣

 arr2非空,且norm_type不同值时函数cvNorm()计算范数的计算公式


bubuko.com,布布扣  


实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;


int main() 
{ 
	double a[3][3] = 
	{    
		{1,2,3},
		{4,-12,6},
		{7,8,9}
	};

	CvMat va = cvMat(3,3, CV_64FC1,a);


	cout<<"目标矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}


	double dis = cvNorm(&va,NULL,CV_C,NULL);

	cout<<"结果:"<<endl;

	cout<< dis <<endl;
	

	getchar();
	return 0;

}

输出结果


bubuko.com,布布扣


(5)cvNormalize函数

其结构


void cvNormalize(
	const CvArr* src, //目标矩阵
	CvArr* dst,//结果矩阵
	double a = 1.0 // 归一化区间上限
	double b = 0.0 // 归一化区间下限
	int norm_type = CV_L2,//选择归一化标量
	const CvArr* mask //矩阵“开关”
);


ps:函数cvNormalize()的参数norm_type可能的值


bubuko.com,布布扣


实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;


int main() 
{ 
	double a[3][3] = 
	{    
		{1,0,0},
		{0,2,0},
		{0,0,2}
	};

	CvMat va = cvMat(3,3, CV_64FC1,a);

	cout<<"目标矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}


	cvNormalize(&va,&va,1,0,CV_C);

	cout<<"结果矩阵:"<<endl;

	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
			printf("%f\t",cvmGet(&va,i,j));
		cout << endl;
	}

	getchar();
	return 0;
}

输出结果


bubuko.com,布布扣


to be continued

《学习opencv》笔记——矩阵和图像操作——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize,布布扣,bubuko.com

《学习opencv》笔记——矩阵和图像操作——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize

原文:http://blog.csdn.net/zhurui_idea/article/details/28856755

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!