0

EmguCV Matrix.Addメソッドを使用して、あるマトリックスを別のマトリックスに追加しています。

Emgu.CV.Matrix<float> descriptors = new Emgu.CV.Matrix<float>(0, dictionarySize);
Emgu.CV.Matrix<float> BOWDescriptor = imageDescriptorExtractor.Compute(trainingImage, keyPoints);
descriptors.Add(BOWDescriptor);

対応するOpenCVコードを以下に示します。

Mat bowDescriptor(0, dictionarySize, CV_32FC1);
Mat bowDescriptor;
bowDE.compute(img, keypoints, bowDescriptor);
descriptors.push_back(bowDescriptor);

コンパイル中、例外は発生しません。しかし、アプリを実行すると、次のエラーが発生します。

タイプ'Emgu.CV.Util.CvException'の未処理の例外がEmgu.CV.dllで発生しました追加情報:OpenCV:不明な配列タイプ

これはCV_32FC1データ型と関係がありますか?OpenCVからEmguCVへの変換は正しいですか?

これについてのあなたの助けに感謝します。

ありがとうジェイ

4

1 に答える 1

1

CV_32FC1は、単一チャネル、32ビット浮動小数点配列を意味します。チャネルをゼロにすることはできないため、デフォルトのMatrixコンストラクターで問題ありません。

「追加」呼び出しにブレークポイントを設定して、2つのマトリックスを調べてみましたか?EmguCVがいつその例外をスローするかはわかりませんが、マトリックスサイズに不一致がある可能性があります。

また、「descriptors」オブジェクトのコンストラクターに0行があることに気づきました。これはタイプミスでしたか?

于 2013-03-07T01:35:41.820 に答える