zoukankan      html  css  js  c++  java
  • OpenCV-C++ 图像混合

    这一部分简单介绍一下,两张图像之间的混合操作:

    • 线性混合
    • 相乘
    • 相加

    线性混合

    计算表达式如下:

    [g(x) = alpha f_0(x) + (1- alpha)f_1(x) ]

    代码如下:

    Mat src = imread("/home/chen/dataset/lena.jpg");  // 读取第一张图像
    Mat src2 = imread("/home/chen/dataset/peppers.tiff");  // 读取第二张图像
    
    // 图像混合
    if ((src.size() == src2.size()) && (src.type() == src2.type())){
        Mat dst = Mat(src.size(), src.type());
        double alpha = 0.7;
        addWeighted(src, alpha, src2, (1-alpha), 0, dst);
        namedWindow("dst", WINDOW_AUTOSIZE);
        imshow("dst", dst);
    } else {
        printf("error
    ");
        return -1;
    }
    

    结果如下:

    相乘/相加

    除了两张图像的线性组合,也可以将两张图像直接相乘或者相加,如下:

    add(src, src2, dst);
    multiply(src, src2, dst);
    

    最后,完整代码如下:

    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(){
    
        // 读取图像
        Mat src = imread("/home/chen/dataset/lena.jpg");
        if (src.empty()){
            printf("could not load image.
    ");
            return -1;
        }
        namedWindow("scr", WINDOW_AUTOSIZE);
        imshow("src", src);
    
        Mat src2 = imread("/home/chen/dataset/peppers.tiff");
        if (src2.empty()){
            printf("could not load image.
    ");
            return -1;
        }
        namedWindow("src2", WINDOW_AUTOSIZE);
        imshow("src2", src2);
    
        // 图像混合
        if ((src.size() == src2.size()) && (src.type() == src2.type())){
            Mat dst = Mat(src.size(), src.type());
            double alpha = 0.7;
            addWeighted(src, alpha, src2, (1-alpha), 0, dst);
            // add(src, src2, dst);
            // multiply(src, src2, dst);
            namedWindow("dst", WINDOW_AUTOSIZE);
            imshow("dst", dst);
        } else {
            printf("error
    ");
            return -1;
        }
        waitKey(0);
        return 0;
    }
    
  • 相关阅读:
    GLSL
    c++ 的垃圾收集(garbage collector
    ZZ 红黑树,并非想象中的那么复杂
    【转载】我心目中的android机器档次
    代码优化
    qqww
    solve Ax+By+C=0
    the c10k problem
    标 题: 腾讯面试题目(PHP程序员)
    zz 软件开发流程工具一览
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/14619545.html
Copyright © 2011-2022 走看看