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;
    }
    
  • 相关阅读:
    day15
    day13
    day12
    使用modelsim直接仿真IP(FIFO)
    整理:FPGA选型
    Quartus 中调用modelsim的流程及*.vt或*.vht自动生成
    quartus ip核破解
    LDO ,开关电源DC-DC的优缺点
    硬件工程师面试经历2015---笔试篇
    出色的硬件工程师必备的几项“硬”实力
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/14619545.html
Copyright © 2011-2022 走看看