原帖地址: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);