程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> OpenCV實現兩張圖片的合並

OpenCV實現兩張圖片的合並

編輯:關於C++

原理:

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

的值位於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 alpha  
    std::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 1  
    if (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 Windows  
    namedWindow("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:

返回欄目頁:http://www.bianceng.cn/Programming/cplus/

圖片2:

合並後的圖片:

作者:csdn博客 鐘桓

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved