首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv图像拼接

opencv图像拼接
EN

Stack Overflow用户
提问于 2012-12-17 00:22:05
回答 1查看 1.7K关注 0票数 0

我已经找了好几个小时了,但找不到问题。

当我想要将两个图像缝合在一起时,我会得到以下错误:

代码语言:javascript
复制
OopenCV error: assertion failed (y==0 || data && dims >=1 && (unsigned)y < (unsigned > size.p[0])) in unkown function...

这是代码(pano.jpg在以前运行的算法中已经拼接在一起了,算法也是一样的.):

代码语言:javascript
复制
cv::Mat img1 = imread("input2.jpg");
cv::Mat img2 = imread("pano.jpg");

std::vector<cv::Mat> vectest;
vectest.push_back(img2);
vectest.push_back(img1);
cv::Mat result;
cv::Stitcher stitcher = cv::Stitcher::createDefault( false );
stitcher.setPanoConfidenceThresh(0.01);
detail::BestOf2NearestMatcher *matcher = new detail::BestOf2NearestMatcher(false, 0.001/*=match_conf*/);
detail::SurfFeaturesFinder *featureFinder = new detail::SurfFeaturesFinder(100);
stitcher.setFeaturesMatcher(matcher);
stitcher.setFeaturesFinder(featureFinder);
cv::Stitcher::Status status = stitcher.stitch( vectest, result );

你可以在这里找到这些图像:

编辑:我自己编写了opencv 2.4.2,但仍然是同一个问题.

系统在以下行的stitcher.cpp文件中崩溃:

代码语言:javascript
复制
blender_->feed(img_warped_s, mask_warped, corners[img_idx]);

在这个feed函数中,它崩溃在以下一行:

代码语言:javascript
复制
int y_ = y - y_tl;
            const Point3_<short>* src_row = src_pyr_laplace[i].ptr<Point3_<short> >(y_);
            Point3_<short>* dst_row = dst_pyr_laplace_[i].ptr<Point3_<short> >(y);

最后,在mat.hpp中的这个断言:

代码语言:javascript
复制
template<typename _Tp> inline _Tp* Mat::ptr(int y)
{
    CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
    return (_Tp*)(data + step.p[0]*y);
}

奇怪的是这里的一些人一切都很好..。

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 08:00:57

我现在拼接图像,但不使用缝合高级功能,而是通过opencv2.4.2对每一步进行编码。据我所知,您可以尝试一下第一个SurfFeaturesFinder,第二个BestOf2NearestMatcher。试一试,祝你好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13906871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档