0

行列に転置を掛けて、ゼロ行列を取得しています。

私は他の行列を掛けていますが、問題はありません。私はこれを と の両方で試しましたがcvMulcvMulTransposed常にゼロ行列が得られますが、これは予想される結果とは異なります。

コード:

  CvMat *test = cvCreateMat(3, 3, CV_64F);
  CvMat *test2 = cvCreateMat(3, 3, CV_64F);
  for(NSInteger row = 0; row < 3; row++) {
    for (NSInteger column = 0; column < 3; column++) {
      double value = 0.0f;
      if (row == column) {
        switch(row+column) {
          case 0:
            value = 16.815826;
            break;
          case 2:
            value = 1.492630;
            break;
        }
      }
      cvSetReal2D(test, row, column, value);
      cvSetReal2D(test2, row, column, value);
    }
  }

  [self printCvMat:test];
  [self printCvMat:test2];

  CvMat *testResult = cvCreateMat(test->rows, test2->cols, CV_64F);
  cvMul(test, test2, testResult, 0.0f); 
  [self printCvMat:testResult];

出力:

Printing Matrix:
16.815826 0.000000 0.000000 
0.000000 1.492630 0.000000 
0.000000 0.000000 0.000000 
Printing Matrix:
16.815826 0.000000 0.000000 
0.000000 1.492630 0.000000 
0.000000 0.000000 0.000000
Printing Matrix:
0.000000 0.000000 0.000000 
0.000000 0.000000 0.000000 
0.000000 0.000000 0.000000 

そのはず:

282.772   0.000   0.000
  0.000   2.228   0.000
  0.000   0.000   0.000
4

1 に答える 1

4

ドキュメントから:

この関数multiplyは、2 つの配列の要素ごとの積を計算します。

dst(I) = saturate(スケール • src1(I) • src2(I))

0スケールの a を渡しています。

于 2013-05-25T16:54:56.863 に答える