OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 126|回复: 5

求助:opencv利用stitcher经行图像拼接遇到了问题

[复制链接]
发表于 2017-1-11 22:58:40 | 显示全部楼层 |阅读模式
程序如下所示:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/stitching/stitcher.hpp>
using namespace std;
using namespace cv;
bool try_use_gpu = false;
vector<Mat> imgs;
string result_name = "result.jpg";
int main(int argc, char * argv[])
{
        Mat img1 = imread("A:\\Users\\chen\\Desktop\\123.jpg");
        Mat img2 = imread("A:\\Users\\chen\\Desktop\\1234.jpg");

        if (img1.empty() || img2.empty())
        {
                cout << "Can't read image" << endl;
                return -1;
        }
        imgs.push_back(img1);
        imgs.push_back(img2);

        Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
        // 使用stitch函数进行拼接
        Mat pano;
        Stitcher::Status status = stitcher.stitch(imgs, pano);
        imwrite(result_name, pano);
        Mat pano2 = pano.clone();
        // 显示源图像,和结果图像
        imshow("全景图像", pano);
        if (waitKey() == 27)
                return 0;
}

运行完后关闭窗口就出现了如下所示的问题,请问是什么原因,怎么解决呢??A:\Users\chen\Desktop\666.png
问题为:
Microsoft Visual C++ Runtime Library
Debug Assertion Failed!
programe:H\visual studio 工程\opencv2.49\Debug\opencv2.49.exe
File:minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line:892
Expression:is_block_type_vaild(header->_block_use)
For information on how your program can cause an assertion
failure,see the visual c++ documentation on asserts.
(Press Retry to debug the application)
请问怎么解决呢?
回复

使用道具 举报

发表于 2017-1-12 13:34:14 | 显示全部楼层
File:minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line:892
Expression:is_block_type_vaild(header->_block_use)
这两句说的很清楚了啊,自己去源码里面看啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-15 20:15:23 | 显示全部楼层
刚接触OPENCV的,请问是我的程序有问题还是?想请教一下具体的解决方法,是和源码里面的矛盾了吗?
回复 支持 反对

使用道具 举报

发表于 2017-1-16 01:07:20 | 显示全部楼层
我也是新手,最近也用了stich, 注意源图像需要有足够的overlap,否则会报错。
你没有check status,pano is null,换源图就行了。
Stitcher::Status status = stitcher.stitch(imgs, pano);
if (status != Stitcher::OK)
{   
     cout << "Can't stitch images, error code = " << int(status) << endl;  
     return -1;  
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-17 18:59:00 | 显示全部楼层
riverxieh 发表于 2017-1-16 01:07
我也是新手,最近也用了stich, 注意源图像需要有足够的overlap,否则会报错。
你没有check status,pano i ...

不过我添加了这个检测代码也还是会有这个问题,同为新手不知怎么解决
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
末日使者day 发表于 2017-1-12 13:34
File:minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line:892
Expression:is_block_type_vaild(head ...

是要根据源码修改吗?还是怎样?新手不太懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|感谢博安盈科技资助本网站|OpenCV中文网站 ( 粤ICP备13079875号-2  

GMT+8, 2017-1-25 07:32 , Processed in 0.105333 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表