opencv中矩阵的操作(两种程序)

//创建时间:2015年6月3日
//功能:完成矩阵中元素操作功能
//使用到的函数:
//cvMatMulAdd(src1,src2,src3,dst)
//功能是:dist=src1*src2+src3
//src1 第一输入数组
//src2 第二输入数组
//src3 第三输入数组
//dst  输出数组
//  CV_MAT_ELEM( matrix, elemtype, row, col ) 
//  参数 
//  matrix:要访问的矩阵 
//   elemtype:矩阵元素的类型 
//  row:所要访问元素的行数 
//  col:所要访问元素的列数
#include <cv.h>
#include <highgui.h>
using namespace std;


int main()
{
CvMat * M_Mat_1, *M_Mat_2, *M_Mat_3;
M_Mat_1 = cvCreateMat(3,3,CV_64FC1);
M_Mat_2 = cvCreateMat(3,3,CV_64FC1);
M_Mat_3 = cvCreateMat(3,3,CV_64FC1);
double m_rat[9]={1,2,3,4,5,6,7,8,9};


cvInitMatHeader( M_Mat_1 , 3 , 3 , CV_64FC1 , m_rat );
M_Mat_2 = cvCloneMat( M_Mat_1 );
cvMatMulAdd( M_Mat_1 , M_Mat_2 , 0 , M_Mat_3 );
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
{
cout<<CV_MAT_ELEM( *M_Mat_3 , double , i , j )<<" "<<endl;  //注意传参数的问题,传参数错误会导致找不到对应函数的问题(提示:表达式必须包含类类型)
}
}
//cvWaitKey (0);    //对CV中创造的窗体才起作用,对黑框不起作用
getchar (); //防止黑框闪现
cvReleaseMat(&M_Mat_1); //记住释放资源
cvReleaseMat(&M_Mat_2);
cvReleaseMat(&M_Mat_3);
return 0;

}



//创建时间2015年6月3日
//功能:完成矩阵整体赋值的问题
//除了这程序中的方法,赋值方法还包括上个程序给出了 另一种方法:cvInitMatHeader
//程序中存在一个小问题,希望大神能够帮忙解决一下:
//问题:M_Mat_4赋值的时候出现内存泄露问题,可私信我QQ:915156234,非常感谢!
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std;


int main()
{
CvScalar m_Value = cvRealScalar(1);
CvMat * M_Mat_1, *M_Mat_2, *M_Mat_3 , *M_Mat_4;
M_Mat_1 = cvCreateMat(3,3,CV_64FC1);
M_Mat_2 = cvCreateMat(3,3,CV_64FC1);
M_Mat_3 = cvCreateMat(3,3,CV_64FC1);
M_Mat_4 = cvCreateMat(3,3,CV_64FC1);
cvSet( M_Mat_1 , m_Value , NULL );      // 设定矩阵为固定值
cvSetZero( M_Mat_2 ); //将M_Mat2全部置零
cvSetIdentity( M_Mat_3 ); //初始化跟M_Mat_1等价

//cvRange(M_Mat_4,2,10); //这个会出现内存泄露的问题,没有解决,谁会?帮忙解决一下!!私信QQ:915156234


for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
{
cout<<CV_MAT_ELEM( *M_Mat_3 , double , i , j )<<" "<<endl;  //注意传参数的问题,传参数错误会导致找不到对应函数的问题(提示:表达式必须包含类类型)
}
}
getchar (); //防止黑框闪现
cvReleaseMat(&M_Mat_1); //记住释放资源
cvReleaseMat(&M_Mat_2);
cvReleaseMat(&M_Mat_3);
cvReleaseMat(&M_Mat_4);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值