ROI和图像融合

【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析

  • ROI: region of interest 感兴趣区域
  • addWeighted 是常用的图像融合函数
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv; // OpenCV中的C++类和函数都是定义在命名空间cv之内的

int main() {

    // 背景图,logo
    Mat image = imread("../pictures/dota.jpg"); // 默认第2个参数flags=1,(flags>0 返回一个3通道的彩色图像)
    Mat logo = imread("../pictures/logo.jpg");

    // 显示原图像的窗口
    namedWindow("image"); // mac标题栏不能显示中文
    imshow("image", image);

    // ROI: region of interest 感兴趣区域
    Mat imageROI = image(Rect(800, 10, logo.cols, logo.rows)); // 定义image中的ROI区域(区域大小=logo大小)
    // 或者
    // Mat imageROI = image(Range(350, 350 + logo.rows), Range(800, 800 + logo.cols));

    // 图像混合操作
    // computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
    // gamma 可以理解为偏置
    addWeighted(imageROI, 0.5, logo, 0.5, 0, imageROI);

    // 显示融合后图像的窗口
    namedWindow("image+logo");
    imshow("image+logo", image);

    // 输出图像
    imwrite("../pictures/dota+logo.jpg", image);

    waitKey(3000);
}

addWeighted 函数

//! computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
                              double beta, double gamma, OutputArray dst, int dtype=-1);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容