cvMatND 多维数组 设置和读取像素值

原帖地址:http://shijuanfeng.blogbus.com/logs/206701809.html

opencv中的多维数组——MatND的用法,因为直方图就是多维数组,所以了解一下它的基本用法,仅做收藏。

 

void MatNDReadAndSet()
{
int M = 192;
int N = 168;
int K = 7;
int size[] = { M, N, K };
CvMatND* mXOrigin = cvCreateMatND( 3, size, CV_32FC1 );
cvSetZero( mXOrigin );

float c = 0;

for ( int k=0; k<K ; k++)
{
for ( int i=0; i<M; i++)
{
for ( int j=0; j<N; j++)
{
*(mXOrigin->data.fl + ( M*N*k + N*i + j) ) = c;
c = c+1;
}
}
}

for ( int k=0; k<K; k++)
{
for ( int i=0; i<M; i++)
{
for ( int j=0; j<N; j++)
{
cout << *(mXOrigin->data.fl + ( M*N*k + N*i + j) ) << "\t";
}
cout << endl;
}
cout << endl;
}


cvReleaseMatND( &mXOrigin );

}

除了这种方式,在c++中,还可以用另外一种更直接的方式:

uchar tt, tt1;

int dims[3]={256, 256, 256};
cv::MatND lookup(3,dims,CV_8U)

lookup.at<uchar>(i, j,k) = tt;

tt1 = lookup.at<uchar>(i, j,k);

posted on 2012-10-19 20:52  迈克老狼2012  阅读(1623)  评论(0编辑  收藏  举报

导航