生活随笔
收集整理的這篇文章主要介紹了
opencv实现几幅图像拼接成一整幅大图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
opencv實現幾幅圖像拼接成一整幅大圖 標簽: 博客opencv 2013-10-22 12:05 9846人閱讀 收藏 舉報 本文章已收錄于: 分類: opencv(14) 作者同類文章X
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
開始嘗試merge函數,具體如下:
定義四個矩陣A,B,C,D。得到矩陣combine。
[cpp] view plaincopy print?
<span?style="font-size:18px" >#include<iostream>?? #include?<core/core.hpp> ??#include?<opencv2/imgproc/imgproc.hpp> ??#include?<opencv2/highgui/highgui.hpp> ??using ?namespace ?std;??using ?namespace ?cv;??int ?main()??{?? ????cv::Mat?a?=?(cv::Mat_<int >(2,2)<<1,2,3,4);?? ????cv::Mat?b?=?(cv::Mat_<int >(2,2)<<5,6,7,8);?? ????cv::Mat?c?=?(cv::Mat_<int >(2,2)<<9,10,11,12);?? ????cv::Mat?d?=?(cv::Mat_<int >(2,2)<<13,14,15,16);?? ????std::vector<cv::Mat>?v1;?? ????v1.push_back(a);?? ????v1.push_back(b);?? ????v1.push_back(c);?? ????v1.push_back(d);?? ????cv::Mat?combine;?? ????cv::merge(v1,?combine);?? ????cout?<<?"combine=" ?<<combine<<?endl;?? ????cout<<"Size?of?combine:" <<combine.size()<<endl;?? ?? ????system("pause" );?? ????return ?0;?? }</span>?? #include<iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);std::vector<cv::Mat> v1;v1.push_back(a);v1.push_back(b);v1.push_back(c);v1.push_back(d);cv::Mat combine;cv::merge(v1, combine);cout << "combine=" <<combine<< endl;cout<<"Size of combine:"<<combine.size()<<endl;system("pause");return 0;
}
結果如下:
顯然,不是我們需要的結果。
嘗試hconcat和vconcat函數,這兩個函數OpenCV本身并沒有。
詳細介紹參見hconcat和vconcat。
具體實現如下:
[cpp] view plaincopy print?
<span?style="font-size:18px" >#include?<iostream>?? #include?<core/core.hpp> ??#include?<opencv2/imgproc/imgproc.hpp> ??#include?<opencv2/highgui/highgui.hpp> ??using ?namespace ?std;??using ?namespace ?cv;??int ?main()??{?? ????cv::Mat?a?=?(cv::Mat_<int >(2,2)<<1,2,3,4);?? ????cv::Mat?b?=?(cv::Mat_<int >(2,2)<<5,6,7,8);?? ????cv::Mat?c?=?(cv::Mat_<int >(2,2)<<9,10,11,12);?? ????cv::Mat?d?=?(cv::Mat_<int >(2,2)<<13,14,15,16);?? ????Mat?combine,combine1,combine2;?? ????hconcat(a,b,combine1);?? ????hconcat(c,d,combine2);?? ????vconcat(combine1,combine2,combine);?? ?????? ?????? ????cout<<"Combine=:" <<combine<<endl;?? ????system("pause" );?? ????return ?0;?? }</span>?? #include <iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);Mat combine,combine1,combine2;hconcat(a,b,combine1);hconcat(c,d,combine2);vconcat(combine1,combine2,combine);//namedWindow("Combine",CV_WINDOW_AUTOSIZE);//imshow("Combine",combine);cout<<"Combine=:"<<combine<<endl;system("pause");return 0;
} 結果:
圖像拼接實現
[cpp] view plaincopy print?
#include?<iostream> ??#include?<core/core.hpp> ??#include?<opencv2/imgproc/imgproc.hpp> ??#include?<opencv2/highgui/highgui.hpp> ??using ?namespace ?std;??using ?namespace ?cv;??int ?main()??{?? ?????? ?????? ?????? ?????? ????Mat?combine,combine1,combine2;?? ????Mat?a=imread("1.jpg" );?? ????Mat?b=imread("2.jpg" );?? ????Mat?c=imread("3.jpg" );?? ????Mat?d=imread("4.jpg" );?? ????hconcat(a,b,combine1);?? ????hconcat(c,d,combine2);?? ????vconcat(combine1,combine2,combine);?? ????namedWindow("Combine" ,CV_WINDOW_AUTOSIZE);?? ????imshow("Combine" ,combine);?? ????waitKey(0);?? ?????? ????system("pause" );?? ????return ?0;?? }?? #include <iostream>
#include <core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{//cv::Mat a = (cv::Mat_<int>(2,2)<<1,2,3,4);//cv::Mat b = (cv::Mat_<int>(2,2)<<5,6,7,8);//cv::Mat c = (cv::Mat_<int>(2,2)<<9,10,11,12);//cv::Mat d = (cv::Mat_<int>(2,2)<<13,14,15,16);Mat combine,combine1,combine2;Mat a=imread("1.jpg");Mat b=imread("2.jpg");Mat c=imread("3.jpg");Mat d=imread("4.jpg");hconcat(a,b,combine1);hconcat(c,d,combine2);vconcat(combine1,combine2,combine);namedWindow("Combine",CV_WINDOW_AUTOSIZE);imshow("Combine",combine);waitKey(0);//cout<<"Combine=:"<<combine<<endl;system("pause");return 0;
}
圖像結果顯示如下:
頂
0 踩
0 上一篇我的CSDN博客之旅 下一篇opencv保存圖像自動命名 我的同類文章 opencv(14) http://blog.csdn.net
?圖像處理形態學橢圓形模板結構元素的設計與實現2015-08-25閱讀533 ?OpenCV重復播放攝像頭視頻,循環播放攝像頭(視頻)文件,循環播放視頻中某一段視頻2014-12-02閱讀1171 ?OpenCV讀取多幅圖片,讀取系列圖片,讀取文件夾中指定圖像類型的系列圖片2014-11-30閱讀1787 ?邊緣檢測——Sobel2014-11-24閱讀385 ?利用OpenCV實現——目標跟蹤方法(一)2014-08-30閱讀633 ?OpenCV遍歷文件夾中所有圖像2014-03-10閱讀1625 ?OpenCV Viz 3D虛擬空間模塊2015-04-30閱讀2232 ?OpenCV搜索文件夾中的圖片并保存圖片路徑和信息2014-11-30閱讀862 ?OpenCV圖像幾何變換——轉置,鏡像,倒置2014-11-30閱讀2742 ?直方圖均衡化2014-11-02閱讀664 ?保存OpenCV中Mat_<Vec3f>格式的圖像2014-04-14閱讀2069 更多文章
總結
以上是生活随笔 為你收集整理的opencv实现几幅图像拼接成一整幅大图 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。