opencv2實(shí)現(xiàn)10張圖像上下左右拼接融合
本文實(shí)例為大家分享了opencv2實(shí)現(xiàn)多張圖像上下左右拼接融合的具體代碼,供大家參考,具體內(nèi)容如下
在前面的“opencv2兩張圖像拼接融合_基于SURF特征提取”博文中,實(shí)現(xiàn)了兩張左右圖像的拼接融合,后來我也實(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)文章
Matlab實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)顯示方法
這篇文章主要為大家詳細(xì)介紹了Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
C++數(shù)據(jù)結(jié)構(gòu)之并查集詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之并查集詳解,并查集是一種樹型的數(shù)據(jù)結(jié)構(gòu),用于處理一些不相交集合的合并及查詢問題,并查集的思想是用一個(gè)數(shù)組表示了整片森林,需要的朋友可以參考下2023-08-08
C語言利用goto語句設(shè)計(jì)實(shí)現(xiàn)一個(gè)關(guān)機(jī)程序
今天給大家分享一個(gè)非常有趣的知識(shí)——用goto語句編寫一個(gè)關(guān)機(jī)小程序。主要用到了shutdown命令語句、goto語句、strcmp函數(shù)等知識(shí)點(diǎn),感興趣的可以了解一下2023-01-01
C++深入講解類與對(duì)象之OOP面向?qū)ο缶幊膛c封裝
學(xué)習(xí)過C語言的小伙伴知道:C語言是面向過程的,關(guān)注的是過程,分析出求解問題的步驟,通過函數(shù)調(diào)用逐步解決問題,接下來讓我們?cè)敿?xì)的了解2022-05-05
C++內(nèi)存池的簡(jiǎn)單實(shí)現(xiàn)
內(nèi)存池是一種動(dòng)態(tài)內(nèi)存分配與管理技術(shù)。本文主要介紹了C++內(nèi)存池的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Matlab中圖像數(shù)字水印算法的原理與實(shí)現(xiàn)詳解
數(shù)字水印技術(shù)作為信息隱藏技術(shù)的一個(gè)重要分支,是將信息(水印)隱藏于數(shù)字圖像、視頻、音頻及文本文檔等數(shù)字媒體中,從而實(shí)現(xiàn)隱秘傳輸、存儲(chǔ)、標(biāo)注、身份識(shí)別、版權(quán)保護(hù)和防篡改等目的。本文就來講講圖像數(shù)字水印算法的原理與實(shí)現(xiàn),感興趣的可以了解一下2023-04-04

