opencv:
void PrintMat( Mat &_m)
{
Mat m = Mat_<float>( _m );
for ( int k1=0; k1<m.rows; k1++ )
{
for ( int k2=0; k2<m.cols; k2++ )
{
cout << m.at<float>(k1,k2) << " ";
}
cout << endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Mat m = Mat::zeros(2,2,CV_32F);
m.at<float>(0,0) = 1;
m.at<float>(0,1) = 2;
m.at<float>(1,0) = 3;
m.at<float>(1,1) = 4;
Mat m1 = m.reshape(0, 1);
Mat m2 = m.reshape(0, 4);
cout << "m:" << endl;
PrintMat(m);
cout << "m.reshape(0, 1):" << endl;
PrintMat(m1);
cout << "m.reshape(0, 4):" << endl;
PrintMat(m2);
return 0;
}
m:
1 2
3 4
m.reshape(0, 1):
1 2 3 4
m.reshape(0, 4):
1
2
3
4
请按任意键继续. . .
Matlab:
>> m = [1,2;3,4]
m =
1 2
3 4
>> m1 = reshape(m,1,4)
m1 =
1 3 2 4
>> m2 = reshape(m,4,1)
m2 =
1
3
2
4
可以看出OPENCV是行优先,而matlab是列优先。
就这个小问题,让我的N久的训练全都是错位的!!!!