私はコンピュータビジョンアプリケーションにopencv C++ APIを使用していますが、私はcv :: Mat構造で行列を管理しています。 Opencvはrefカウントを使って、作成されたオブジェクトをcv :: Matとして解放します。 私は、より具体的な機械学習アルゴリズムのためにlibshogunも使用しています。 Shogunには、SGMatrixという独自の行列構造があります。 私はCVからSGMatrixを初期化::マットを次のように:私はのような将軍のlibに別のオブジェクトを使用する場合マトリックス(dis)割り当て
cv::Mat cvmat(100,100,CV_32FC1,cv::Scalar(0.0));
SGMatrix<float> sgmatrix((float*)cvmat.data, cvmat.rows, cvmat.cols);
私の問題がある:将軍が作成行列を所有することになりましたはずの
CSimpleFeatures<float>* features = new CSimpleFeatures<float>(sgmatrix);
features
で、実行時にopencvがshogunによってすでにリリースされたcvmat
を解放しようとすると、エラーが発生します。 どうすれば対応できますか?私は行列をクローンしたくない。
注:cvmatオブジェクトにrefを追加しようとしましたが、同じエラーが発生しました。ショーグンから、opencvからではありません。 *** glibcが見つかりました***/home/eric/dev /(...):ダブルフリーまたは破損(アウト):0x0000000000a2f1c0 *** =======バックトレース:======== = /usr/local/lib/libshogun.so.12 – Eric