搞了两天的图像拼接,借用opencv例程自带的stitching.hpp 例程,网上也找了很多例程,但是无奈,每次运行的时候,Stitcher::Status status = stitcher.stitch(imgs, pano);//拼接总是错误,随后在网上找了很多解决办法,都不行。不是路径问题。
后来的解决办法: 在Debug 模式写和 Release模式下,链接器
opencv_ts300.lib、opencv_ts300d.lib
opencv_world300.lib、opencv_world300d.lib、
这几个文件不能同时存在,
在Debug 模式下:用opencv_ts300d.lib和opencv_world300d.lib、
在Release模式下:用opencv_ts300.lib和opencv_world300.lib、
纠正过后,我的问题就解决了。
#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching.hpp"
#include<Windows.h>
using namespace std;
using namespace cv;
bool try_use_gpu = false;
vector<Mat> imgs;
string result_name = "D:/result.jpg";
int main()
{
Mat img1 = imread("D:/a1.jpg");
Mat img2 = imread("D:/a2.jpg");
Mat img3 = imread("D:/a3.jpg");
Mat img4 = imread("D:/a4.jpg");
Mat img5 = imread("D:/a5.jpg");
imgs.push_back(img1);
imgs.push_back(img2);
imgs.push_back(img3);
imgs.push_back(img4);
imgs.push_back(img5);
Mat pano;
Stitcher stitcher = Stitcher::createDefault(false);
Stitcher::Status status = stitcher.stitch(imgs, pano);
if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << status << endl;
return -1;
}
namedWindow(result_name);
imshow(result_name, pano);
//imwrite(result_name, pano);
waitKey();
return 0;
}
在使用OpenCV进行图像拼接时遇到Stitcher::Status为错误的状态,尝试多种解决办法无效。问题最终在于Debug和Release模式下链接器需分别使用不同的opencv库文件:Debug模式下使用opencv_ts300d.lib和opencv_world300d.lib,Release模式下使用opencv_ts300.lib和opencv_world300.lib,调整后问题得到解决。
1764

被折叠的 条评论
为什么被折叠?



