1. 程式人生 > >OpenCV-累加矩陣中的所有元素

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

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;
}
執行結果: