创建一个10行*10列的矩阵,矩阵元素为三通道。最后将此矩阵的元素打印出来,加强对OpenCV矩阵、指针的理解。
#include "cv.h"
#include "stdio.h"
int main()
{
/*用cvCreateMat函数建立一个CvMat格式、10行*10列、3通道8位signed型的矩阵mat,返回一个指向CvMat结构体的指针*/
CvMat* mat = cvCreateMat( 10, 10, CV_8UC3 );
cvZero(mat);
/*定义一个uchar型的指针ptr,指向矩阵mat[0][0],即矩阵mat的首地址*/
uchar* ptr = cvPtr2D( mat, 0, 0 );
int x = 0;
int y = 0;
for( y=0; y<10; y++ ) //行循环
{
ptr = cvPtr2D( mat, 0, y ); //将指针ptr定位至第y行的第0个元素处,即指向每一行的首地址
for( x=0; x<10; x++) //列循环
{
printf( " [%d,%d,%d] ", ptr[3*x+0], ptr[3*x+1], ptr[3*x+2] ); //循环输出矩阵元素mat[x][y]的三个值(因为设置为三通道)
}
printf( "\n" ); //每输出完一行换行
}
return 0;
}