我正在尝试通过在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用法正确吗?

谢谢...

最佳答案

我发现了,这是与JavaCv相关的错误。

实际上JavaCv并不内..OpenCV缝合器API使用cv::OutputArray返回缝合的图像,但是此方法在执行时会将cv::OutputArray转换为cv::Mat。 JavaCV仅通过使用参数接口(interface)来移植OpenCV方法,因此它将参数转换为std::vector,这导致断言失败。

需要将std::vector转换为Mat才能正常工作。我不知道此转换有任何其他方式,但否则只能由lib的作者修复。

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

关于opencv - JavaCV拼接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11133660/

10-13 04:13