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

感兴趣区域 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容