[オリジナル]opencvで画像のつなぎ合わせを実現し、パノラマを作成する
6390 ワード
転載は以下のことを明記してください.
http://www.cnblogs.com/ausk/p/3332255.html
Opencv 2.4.6のライブラリ関数を呼び出して、画像のつなぎ合わせ機能を実現して、馬鹿式のつなぎ合わせ、あまり専門知識を必要としません.の
http://www.cnblogs.com/ausk/p/3332255.html
Opencv 2.4.6のライブラリ関数を呼び出して、画像のつなぎ合わせ機能を実現して、馬鹿式のつなぎ合わせ、あまり専門知識を必要としません.の
1 #include "stdafx.h"
2 #include <iostream>
3 #include <opencv2/core/core.hpp>
4 #include <opencv2/highgui/highgui.hpp>
5 #include <opencv2/imgproc/imgproc.hpp>
6 #include <opencv2/stitching/stitcher.hpp>
7 using namespace std;
8 using namespace cv;
9 bool try_use_gpu = false;
10 vector<Mat> imgs;
11 string result_name = "result.jpg";
12 int _tmain(int argc, char * argv[])
13 {
14 Mat img1 = imread("1.jpg");
15 Mat img2 = imread("2.jpg");
16 Mat img3 = imread("3.jpg");
17 Mat img4 = imread("4.jpg");
18 if (img1.empty() || img2.empty())
19 {
20 cout << "Can't read image"<< endl;
21 return -1;
22 }
23 imgs.push_back(img1);
24 imgs.push_back(img2);
25 imgs.push_back(img3);
26 imgs.push_back(img4);
27 Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
28 // stitch
29 Mat pano;
30 Stitcher::Status status = stitcher.stitch(imgs, pano);
31 imwrite(result_name, pano);
32 Mat pano2=pano.clone();
33 // ,
34 imshow(" ", pano);
35 if(waitKey()==27)
36 return 0;
37 }