OpenCV實(shí)現(xiàn)拼圖算法
本文實(shí)例為大家分享了OpenCV實(shí)現(xiàn)拼圖算法的具體代碼,供大家參考,具體內(nèi)容如下
編程環(huán)境:VS2012+OpenCV2.4.6
功能:
第一種是將指定三幅圖的指定位置的像素直接搬移到新的圖像上
第二種是講指定三幅圖按照我們設(shè)定好的大小非等比縮放到第三幅圖上
三張?jiān)磮D像
兩種效果圖
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <iostream> using namespace std; using namespace cv; int main() { ///讀入圖像/ ///image1 //cv::Mat image::zeros(768,1300); Mat image1; image1= cv::imread("1.jpg"); if(!image1.data) { cout<<"image does not exist"<<endl; } namedWindow("Image1");//定義窗口 imshow("Image1",image1);//顯示圖像 ///image2 Mat image2; image2= cv::imread("2.jpg"); if(!image2.data) { cout<<"image does not exist"<<endl; } namedWindow("Image2"); imshow("Image2", image2); //image3 Mat image3; image3= cv::imread("3.jpg"); if(!image3.data) { cout<<"image does not exist"<<endl; } cv::namedWindow("Image3"); cv::imshow("Image3", image3); ///定義生成圖像/ cv::Mat combine = cv::Mat::zeros( 700, 1300,image1.type()); //cout<<image.type()<<endl; 我擦那個哈士奇竟然是16 // define ROI Mat imageROI1= combine(Rect(0,0,500,700)); Mat imageROI2= combine(Rect(500,0,800,350)); Mat imageROI3= combine(Rect(500,350,800,350)); //DEBUG //std::cout<<combine.cols<<" "<<combine.rows<<endl; //圖像直接拷貝的方式~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~•• image1(cv::Rect( 0, 0, 500, 700)).copyTo(imageROI1); image2(cv::Rect( 0, 0, 800, 350)).copyTo(imageROI2); image3(cv::Rect( 0, 0, 800, 350)).copyTo(imageROI3); //通過看到數(shù)值來驗(yàn)證是否是這個地方出錯 //std::cout<<combine(cv::Rect(0, 0, 3, 3))<<std::endl; //最終效果顯示~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ namedWindow("Combined Image"); imshow("Combined Image", combine); ///另外一種方式/ / //那么我們使用另外一種方式,就是resize的方式來搞下這個東西,恩,讓所有的圖像都搞到這里面 ///!!!建議用等比縮放然后獲得出現(xiàn)的黑框 resize(image1, imageROI1, imageROI1.size(),INTER_CUBIC); resize(image2, imageROI2, imageROI2.size(),INTER_CUBIC); resize(image3, imageROI3, imageROI3.size(),INTER_CUBIC); namedWindow("Combined Image++"); imshow("Combined Image++", combine); waitKey(0); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法
本文主要介紹了關(guān)于C++中數(shù)據(jù)16進(jìn)制輸出的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改(頭插頭刪)教程示例詳解
這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)順序表中增刪改關(guān)于頭插頭刪的教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02C語言運(yùn)算符深入探究優(yōu)先級與結(jié)合性及種類
C語言運(yùn)算符號指的是運(yùn)算符號。C語言中的符號分為10類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位操作運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號運(yùn)算符、指針運(yùn)算符、求字節(jié)數(shù)運(yùn)算符和特殊運(yùn)算符2022-05-05VisualStudio?禁用移動文件到文件夾自動修改命名空間功能
這篇文章主要介紹了VisualStudio?禁用移動文件到文件夾自動修改命名空間功能,文章底部給大家介紹了解決安裝VS2022時,出現(xiàn)未能安裝包“Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86,的問題及解決方法,需要的朋友可以參考下2022-09-09