• 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 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 
    "); return -1; }
    	if (!src2.data) { printf("Error loading src2 
    "); 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:

     

    图片2:

     

    合并后的图片:

  • 相关阅读:
    centos服务器上线第二个django项目方法。
    centos7服务器部署django项目。
    C# 修饰符
    PLSQL 12 安装、连接Oracle
    GAC 解释&路径
    WebService 创建、发布、调用
    区域性名称和标识符
    关键字
    运算符 &(与运算)、|(或运算)、^(异或运算)
    ASCII,Unicode,UTF-8,GBK 区别
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5054760.html
Copyright © 2020-2023  润新知