您的位置:首页 > 运维架构

OpenCV-累加矩阵中的所有元素

2017-09-30 16:35 211 查看
1:代码如下:

#include "stdafx.h"
#include "highgui.h"
#include "cv.h"
#include "iostream"
using namespace std;
void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字
{
printf("%s:\n", name);
for (int i=0; i<target->rows; i++)
{
for (int j=0; j<target->cols;j++)
{
printf("%f\t", cvmGet(target, i,j));
}
printf("\n");
}
}

float sum(const CvMat* mat)
{
float s=0.0f;
for(int row=0;row<mat->rows;row++)
{
//ptr[p]的意思就是data里的ptr数组的第p的元素,而ptr就代表数组首指针。
const float* ptr=(const float*)(mat->data.ptr+row*mat->step);//获取第row行的行首指针
for(int col=0;col<mat->cols;col++)
{
s +=*ptr++;
}
}
return s;
}

int main()
{
float vals[]={1,2,3,4};
CvMat rotmat;
//cvInitMatHeader(CvMat矩阵指针,行数,列数,数据类型,一维矩阵指针)
cvInitMatHeader(&rotmat,2,2,CV_32FC1,vals);
PrintMat2(&rotmat,"romat");
cout<<"rotmat矩阵中所有元素的和为:"<<sum(&rotmat)<<endl;;
return 0;
}运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: