1

JavaでJavaCV0.1とOpenCV2.4.0を使用して複数の画像をステッチしようとしていますが、画像のステッチには次のコードを使用しています。

stitcher = Stitcher.createDefault(false);

MatVector images = new MatVector(imageN.size());
for(...){
   CvArr image = cvLoadImage(imageN);
   images.put(index,image);
}

MatVector result = new MatVector(1);
int status = stitcher.stitch(images,result);

if( status == stitcher.OK )
{
   cvSaveImage(result.getIplImage(0));
}

注1:この例でロードされた画像は、ステッチに有効な画像です。

注2:コードのC ++バージョンは、現在の構成で問題なく実行されます

stitcher.stitchメソッドでは、opencvは「k==MAT」などのアサーション例外をスローします。これをどのように修正すればよいですか?このサンプルコードでは、MatVectorの使用法は正しいですか?

ありがとう...

4

1 に答える 1

1

私はそれを見つけました、それはJavaCvに関連したバグです。

実際、JavaCvは有罪ではありません。OpenCVスティッチャーAPIは、ステッチされた画像を返すためにcv :: OutputArrayを使用しますが、このメソッドは実行時にcv::OutputArrayをcv::Matにキャストします。JavaCVは、パラメーター・インターフェースを使用することによってのみOpenCVメソッドを移植するため、パラメーターをstd :: vectorとして変換します。これにより、アサーションが失敗します。

std :: vectorをMatに変換して、機能させる必要があります。この変換に他の方法が存在するかどうかはわかりませんが、それ以外の場合は、libの作成者のみが修正することができます。

c ++バージョンは機能していると言われていますが、実際には、panoパラメーターがcv :: Matとして指定されている場合は機能しており、std :: vectorを入力すると、同じ失敗アサーションが再度発生します。

于 2012-06-21T10:49:19.963 に答える