1

我正在尝试通过在 Java 中使用 JavaCV 0.1 和 OpenCV 2.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 回答