【问题标题】:JavaCV StitchingJavaCV 拼接
【发布时间】:2012-06-21 07:42:38
【问题描述】:

我正在尝试使用 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 的用法在这个示例代码中正确吗?

谢谢...

【问题讨论】:

    标签: opencv javacv image-stitching


    【解决方案1】:

    找到了,是JavaCv相关的bug。

    其实 JavaCv 是无罪的。OpenCV 拼接器 API 使用 cv::OutputArray 来返回拼接后的图像,但是这个方法在执行时会将 cv::OutputArray 转换为 cv::Mat。 JavaCV仅通过参数接口来移植OpenCV方法,因此将参数转换为std::vector,导致断言失败。

    需要将 std::vector 转换为 Mat 才能使其工作。我不知道这种转换存在任何其他方式,否则只能由 lib 的作者修复。

    据说c++版本可以工作,但实际上,当pano参数为cv::Mat时,它在工作,当输入std::vector时,它再次给出相同的失败断言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2023-04-10
      • 2012-05-28
      • 1970-01-01
      相关资源
      最近更新 更多