【发布时间】:2012-09-19 15:05:28
【问题描述】:
我在这里遇到了一个问题,使用 OpenCV 进行了一些简单的拼接工具测试。
这是我的代码:
IplImage *pLeft,
*pRight;
pLeft = cvLoadImage( "left.jpg" );
pRight = cvLoadImage( "right.jpg" );
cv::Mat cvMatLeft( pLeft, true ),
cvMatRight( pRight, true );
std::vector<cv::Mat> imgs;
imgs.push_back( cvMatLeft );
imgs.push_back( cvMatRight );
cv::Mat cvMatOutput;
cv::Stitcher myStitcher = cv::Stitcher::createDefault( true );
cv::Stitcher::Status myStatus = myStitcher.stitch( imgs, cvMatOutput );
我在运行此代码时取回了 ERR_NEED_MORE_IMGS 枚举。 当我调试 OpenCV 调用的函数时,我确实认识到以下不确定性:
stitch() 的第一个参数是一个名为 images 的 cv::InputArray。仔细看一看,参数 sz.width 和 sz.height 为 0。 进一步通过estimateTransform() 两次调用函数matchImages() 来检查成员imgs_。这个是从 InputArray 派生的,并且(结果) size( ) (of images) 为 0。
这导致提到的枚举。
我做错了什么?关于缝合器或 cv::Mat 的初始化?
提前致谢
【问题讨论】:
-
imgs.size() 在调用stitch 之前返回什么?另外,您是否有任何理由从 IplImage 转换并且您不直接使用 imread 读取 Mat 中的图像?
-
你能贴出
left.jpg和right.jpg的图片吗?我想尝试在本地重现。 -
@solvingPuzzles:我得到了相同的状态,我使用了这篇文章中的图片:link
标签: opencv