zoukankan      html  css  js  c++  java
  • opencv —— addWeighted 图像叠加(计算数组加权和)

    计算数组加权和:addWeighted

    可实现两个大小、类型均相同的数组(一般为 Mat 类型)按照设定权重叠加在一起。

    void addWeighted(InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutputArray dst,int dtype =-1);

    • src1,需要加权的第一个数组,通常是一个 Mat。
    • alpha,第一个数组的权重。
    • src2,需要加权的第二个数组,需要和第一个数组拥有相同的尺寸和通道数。
    • beta,第二个数组的权重。
    • gamma,dst[i] = src1[i] * alpha + src2[i] * beta + gamma ; 通常设为 0。
    • dst,输出的数组,需要和输入的两个数组拥有相同的尺寸和通道数。
    • dtype ,输出阵列的可选深度,默认值为 -1。深度为数据存储类型,有 8 位,16 位,32 位等等。

    代码示例:

    #include<opencv.hpp>
    using namespace cv;
    Mat srcImage1, srcImage2, dstImage;
    double alpha, beat;
    int alpha_value = 50;//接收控制条数值
    void change_alpha(int, void*) {
        alpha = alpha_value / 100.0;//第一个数组权重
         beat = 1.0 - alpha;//第二个数组权重
         addWeighted(srcImage1, alpha, srcImage2, beat, 0.0, dstImage);
        imshow("合成图", dstImage);
    }
    int main() {
        srcImage1 = imread("C:/Users/齐明洋/Desktop/3.jpg");
        srcImage2 = imread("C:/Users/齐明洋/Desktop/4.jpg");
        //创建控制条
         namedWindow("Control");
        createTrackbar("Alpha", "Control", &alpha_value, 100, change_alpha);
        waitKey(0);
    }

    结果:

     

     

  • 相关阅读:
    OpenStack云桌面系列【2】—OpenStack和Spice
    Java中的读写锁 ReentrantReadWriteLock
    Spring Boot Actuator 监控实践
    java子线程中获取父线程的threadLocal中的值
    String源码解析
    Java基础一
    Java 8 Lambda表达式实现原理解析
    Rabbit MQ总结
    AtomicInteger及CAS源码解析
    Queue(队列)接口和其实现类PriorityQueue(优先级队列)源码解析
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/11986135.html
Copyright © 2011-2022 走看看