美文网首页
OpenCV 教程 09 : 图形叠加与混合

OpenCV 教程 09 : 图形叠加与混合

作者: wjundong | 来源:发表于2020-02-24 08:26 被阅读0次

    感兴趣区域 ROI

    设置感兴趣区域 ROI (regin og interest),就是框选图象的一部分进行操作

    下例显示如何利用 ROI 将一幅图像加载到另一幅图形的指定位置

    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    
    int main(int argc, char const *argv[])
    {
        Mat image = imread("5.jpg");
        Mat logo = imread("logo.png");
    
        // 设置感兴趣区域
        Mat imageROI = image(Rect(10, 10, logo.cols, logo.rows));
        // 拷贝 logo 到感兴趣区域
        logo.copyTo(imageROI);
    
        imshow("结果", image);
        waitKey(0);
    
        return 0;
    }
    

    运行结果

    image.png

    线性混合

    addWeighted 混合的两张图形需大小一样,否则出错

    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    
    int main(int argc, char const *argv[])
    {
        Mat image = imread("mogu.jpg");
        Mat rain = imread("rain.jpg"), out;
    
        // 线性混合, 0.6 为 image 的权值, 0.4 为 rain 权值
        addWeighted( image, 0.6, rain, 0.4, 0.0, out);
    
        imshow("结果", out);
        waitKey(0);
    
        return 0;
    }
    
    image.png

    对感兴趣区域进行线性混合

    虽然 addWeighted 混合的两张图形需大小一样,否则出错,但可利用兴趣区域 ROI + addWeighted 实现对指定位置进行混合

    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    
    int main(int argc, char const *argv[])
    {
        Mat image = imread("5.jpg");
        Mat logo = imread("logo.png");
        Mat imageROI = image(Rect(10, 10, logo.cols, logo.rows));
    
        addWeighted( imageROI, 0.6, logo, 0.4, 0.0, imageROI);
    
        imshow("结果", image);
        waitKey(0);
    
        return 0;
    }
    
    image.png

    相关文章

      网友评论

          本文标题:OpenCV 教程 09 : 图形叠加与混合

          本文链接:https://www.haomeiwen.com/subject/lgnpqhtx.html