OpenCV兩張圖片的合并

來源:互聯網
上載者:User

標籤:opencv   圖片合并   

轉載請註明出處!!!http://blog.csdn.net/zhonghuan1992

OpenCV兩張圖片的合并     原理:

       兩張圖片合并,想想圖片是用一個個像素點來儲存,每個像素點有他的值。那麼合并,無非就是像素點值得合并,使用的公式可以就是給兩張圖片分別一個權值,然後求和。向下面這個公式:

       的值位於0至1之間

     OpenCV實現:

       那麼我們在openCV內怎麼實現呢?在openCV中,有一個addWeighted函數,函數具體調用可以看這裡。

讀取完兩個要合并的圖片後,(注意,這裡合并的圖片必須是相同的size和type,就是說圖片長寬像素數一樣,color儲存方式要一樣。我選的是388*388的png圖片

/// Read image ( same size, same type )       src1= imread("zh.png");       src2= imread("zh2.png");


調用addWeighted函數,

beta = ( 1.0 - alpha );addWeighted( src1, alpha, src2, beta, 0.0,dst);


       這裡src1和src2都是讀取之後的矩陣,alpha和beta是他們的權重。

其實addWeighted的過程是下面的公式:

       這裡的Y是0.0。

       好,讓我們動手來做這個操作。代碼如下:

#include <cv.h>#include <opencv2/core/core.hpp>  #include<opencv2/highgui/highgui.hpp>  #include <highgui.h>#include <iostream>using namespace cv;int main(){double alpha = 0.5; double beta; double input;Mat src1, src2, dst;/// Ask the user enter alphastd::cout << " Simple Linear Blender " << std::endl;std::cout << "-----------------------" << std::endl;std::cout << "* Enter alpha [0-1]: ";std::cin >> input;/// We use the alpha provided by the user if it is between 0 and 1if (input >= 0.0 && input <= 1.0){alpha = input;}/// Read image ( same size, same type ),注意,這裡一定要相同大小,相同類型,否則出錯src1 = imread("zh.png");src2 = imread("zh2.png");if (!src1.data) { printf("Error loading src1 \n"); return -1; }if (!src2.data) { printf("Error loading src2 \n"); return -1; }/// Create WindowsnamedWindow("Linear Blend", 1);beta = (1.0 - alpha);addWeighted(src1, alpha, src2, beta, 0.0, dst); //這裡調用了addWeighted函數,得到的結果儲存在dst中imshow("Linear Blend",dst);waitKey();return 0;}

結果:

圖片1:

 

圖片2:

 

合并後的圖片:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.