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;
    }
    
  • 相关阅读:
    【产品经理】原型设计工具
    Android进阶推荐书籍
    EventBus学习笔记(一)
    Android APT
    注解学习笔记(二)
    Android开发的小经验总结(上)
    Android开发的小经验总结(下)
    Windows环境下Android Studio v1.0安装教程
    Android-Universal-Image-Loader 图片异步加载类库的使用
    Android 官方推荐 : DialogFragment 创建对话框
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/14619545.html
Copyright © 2011-2022 走看看