3

私は OpenCV マトリックスと表示機能をテストしていて、このバグがありました。それを明らかにするのに半日以上かかりました:

私はもともと、CvMatやMatなど、マトリックスの種類に関係なく、OpenCVマトリックスを表示しようとしました...私の別の投稿のvasile氏が推奨する表示方法でマルチチャネルMat表示機能

表示メソッドは、単純に行列のすべてのデータを取得してストリームを出力します

これは私のプログラムです:

// First: CV_32FC3 works OK

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_32FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();

出力:

ここに画像の説明を入力

// Second: CV_64FC3 crashes

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_64FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();

出力: ここに画像の説明を入力

それらは両方とも同じでなければなりません。右??!!

4

1 に答える 1

6

2 番目の例では、配列を次のように宣言する必要があります。

double objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};

CV_xxtCnとして読むことができます

  • xx: ビット数
  • t: 型 (F = 浮動小数点型、S = 符号付き整数、U = 符号なし整数)
  • n: チャンネル数
于 2012-08-30T06:45:09.077 に答える