opencv2實(shí)現(xiàn)10張圖像上下左右拼接融合
本文實(shí)例為大家分享了opencv2實(shí)現(xiàn)多張圖像上下左右拼接融合的具體代碼,供大家參考,具體內(nèi)容如下
在前面的“opencv2兩張圖像拼接融合_基于SURF特征提取”博文中,實(shí)現(xiàn)了兩張左右圖像的拼接融合,后來(lái)我也實(shí)現(xiàn)了多張圖像的拼接融合。但是opencv2自帶一種函數(shù),直接就實(shí)現(xiàn)了圖像的上下左右拼接。具體程序如下:
#include <iostream>
#include<vector>
#include <fstream>
#include "opencv2/highgui/highgui.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[])
//int _tmain(int argc, _TCHAR* argv[])
{
// 讀取圖像
/*Mat img1 = imread("img1.jpg");
Mat img2 = imread("img2.jpg");
Mat img3 = imread("img3.jpg");*/
Mat image11= imread("1.jpg");
Mat image22= imread("2.jpg");
Mat image33= imread("3.jpg");
Mat image44= imread("4.jpg");
Mat image55= imread("5.jpg");
Mat image66= imread("6.jpg");
Mat image77= imread("7.jpg");
Mat image88= imread("8.jpg");
Mat image99= imread("9.jpg");
Mat image1010= imread("10.jpg");
if (!image11.data || !image22.data|| !image33.data|| !image44.data|| !image55.data
|| !image66.data|| !image77.data|| !image88.data|| !image99.data|| !image1010.data
)
return 0;
因?yàn)槔蠋熃o的圖像太大,先處理下。處理后的圖像存放在imagei中。
Mat image1;
Mat image2;
Mat image3;
Mat image4;
Mat image5;
Mat image6;
Mat image7;
Mat image8;
Mat image9;
Mat image10;
resize(image11,image1,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image22,image2,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image33,image3,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image44,image4,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image55,image5,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image66,image6,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image77,image7,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image88,image8,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image99,image9,Size(400,300),0,0,CV_INTER_LINEAR);
resize(image1010,image10,Size(400,300),0,0,CV_INTER_LINEAR);
imgs.push_back(image1);
imgs.push_back(image2);
imgs.push_back(image3);
imgs.push_back(image4);
imgs.push_back(image5);
imgs.push_back(image6);
imgs.push_back(image7);
imgs.push_back(image8);
imgs.push_back(image9);
imgs.push_back(image10);
// 調(diào)用createDefault函數(shù)生成默認(rèn)的參數(shù)
Stitcher stitcher = Stitcher::createDefault(try_use_gpu);
// 使用stitch函數(shù)進(jìn)行拼接
Mat pano;
Stitcher::Status status = stitcher.stitch(imgs, pano);
// 保存結(jié)果圖像
imwrite(result_name, pano);
// 顯示源圖像,和結(jié)果圖像
imshow("全景圖像", pano);
waitKey(0);
return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
嵌入式C語(yǔ)言二級(jí)指針在鏈表中的應(yīng)用
這篇文章主要為大家介紹了嵌入式C語(yǔ)言二級(jí)指針在鏈表中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
C++ EnterCriticalSection簡(jiǎn)單使用
線程鎖在多線程中可以控制線程的執(zhí)行順序,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
C++實(shí)現(xiàn)LeetCode(124.求二叉樹(shù)的最大路徑和)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(124.求二叉樹(shù)的最大路徑和),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
vs2019永久配置opencv開(kāi)發(fā)環(huán)境的方法步驟
這篇文章主要介紹了vs2019永久配置opencv開(kāi)發(fā)環(huán)境的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

