zoukankan      html  css  js  c++  java
  • OpenCV图像的基础叠加

    程序及分析

    /*
     * FileName : blend.cpp
     * Author   : xiahouzuoxin @163.com
     * Version  : v1.0
     * Date     : Mon 28 Jul 2014 08:47:59 PM CST
     * Brief    : 
     * 
     * Copyright (C) MICL,USTB
     */
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char *argv[])
    {
        double alpha = 0.5;
        double beta;
        double input;
    
        Mat src1, src2, dst;
    
        // User input alpha
        cout<<"Simple Linear Blender" << endl;
        cout<<"---------------------" << endl;
        cout<<"Enter alpha [0-1]: ";
        cin>>input;
    
        if (alpha >=0 && alpha <=1) {
            alpha = input;
        }
    
        // Read images
        src1 = imread("../test_imgs/KeNan.jpg");
        src2 = imread("../test_imgs/Background.jpg");
    
        if (!src1.data) {
            cout<<"Error loading src1
    "<<endl;
            return -1;
        }
        if (!src2.data) {
            cout<<"Error loading src2
    "<<endl;
            return -1;
        }
    
        // Create WIndows
        namedWindow("Linear Blend", 1);
    
        beta = (1.0 - alpha);
        addWeighted(src1, alpha, src2, beta, 0.0, dst);
    
        imshow("Linear Blend", dst);
        waitKey(0);
    
        return 0;
    }
    

    这里的图像叠加指线性叠加,设图像A的像素为fA(x),图像B的像素为fB(x)。叠加系数为α,则线性叠加操作为:

    α为0-1之间的值,从上面也能够看出,叠加必需保证两幅输入图像的尺寸大小同样。程序中的

    addWeighted(src1, alpha, src2, beta, 0.0, dst);
    

    完毕叠加操作。

    效果

    result

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    初识你Swift【上篇】
    初识你Swift【下篇】
    单元测试基础
    时间都去哪了?
    iOS App上线的秘密
    mysql系列——DQL常见操作汇总(四)
    Get和Post请求有什么区别?
    SpringBoot2+WebSocket之聊天应用实战
    OCR识别
    mysql系列——子查询(非常重要)(八)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4823324.html
Copyright © 2011-2022 走看看