第5章 Core组件进阶

5.2 ROI区域图像叠加&图像混合

5.2.1 感兴趣区域ROI(region of interest)

1.定义ROI区域两种方法:
(1)定义矩形区域Rect:指定矩形左上角坐标和矩形的长和宽
(2)指定感兴趣行或列的范围Range:Range是从起始索引到终止索引的一段连续序列
2. 示例:利用ROI实现图像叠加

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>using namespace cv;
using namespace std;int main()
{Mat srcimage = imread("love.jpg");Mat logoimage = imread("logo.jpg");Mat imageROI;imageROI = srcimage(Rect(100, 150, logoimage.rows, logoimage.cols));//imageROI = srcimage1(Range(150, 150 + logoimage.rows), Range(100, 100 + logoimage.cols));//加载掩膜,直接将插入的像素设置为logo图像的像素值(必须是灰度图)Mat mask = imread("logo.jpg", 0);//将掩膜复制到ROIlogoimage.copyTo(imageROI, mask);namedWindow("<1>利用ROI实现图像叠加示例窗口");imshow("<1>利用ROI实现图像叠加示例窗口", srcimage);waitKey(0);return 0;
}

5.2.2 线性混合操作

1.理论公式:
2.通过在范围0到1之间改变alpha值,来对两幅图像或视频产生时间上的画面叠化效果(即前后页缓慢过渡叠加效果)
3.实现:addWeighted函数

5.2.3 addWeighted函数:计算数组加权和

1.函数原型:void (InputArray src1,double alpha,InputArray src2,double beta,double gamma,OutputArray dst,int dtype=-1);
2.参数说明:第一个数组(常为Mat),数组权重,和第一个数组相同尺寸和通道数的第二个数组,第二个数组权重,加到权重总和上的标量值,输出的数组,输出阵列的可选深度(默认-1,等同于src1.depth)
3.矩阵表达式:dst=src1[I]*alpha+src2[I]*beta+gamma;其中I是多维数组元素的索引值
4.注意:当输出数组深度为CV_32S时,函数不适用,会内存溢出
5.示例:利用cv::addWeighted()函数实现图像线性混合

#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>using namespace cv;
using namespace std;int main()
{//【1】定义一些局部变量double alphaValue = 0.5;double betaValue;//【2】定义并读取图像Mat srcImage1 = imread("boy1.jpg");Mat srcImage2 = imread("girl1.jpg");Mat dstImage;if(!srcImage1.data) {printf("读取srcImage1图像错误~!\n"); return false; }if(!srcImage2.data) { printf("读取srcImage2图像错误~!\n"); return false; }//【3】图像混合加权操作betaValue = (1.0 - alphaValue);addWeighted(srcImage2, alphaValue, srcImage1, betaValue, 0.0, dstImage);namedWindow("<1>线性混合示例窗口【原图】", 1);imshow("<1>线性混合示例窗口【原图】", srcImage1);namedWindow("<2>线性混合示例窗口【效果图】", 1);imshow("<2>线性混合示例窗口【效果图】", dstImage);//【4】区域图像加权操作Mat srcImage3 = imread("girl1min.jpg");Mat ImageROI = srcImage1(Rect(100, 100, srcImage3.rows, srcImage3.cols));addWeighted(ImageROI, 0.5, srcImage3, 0.3, 0.0, ImageROI);namedWindow("<3>区域线性混合示例窗口【效果图】", 1);imshow("<3>区域线性混合示例窗口【效果图】", srcImage1);waitKey(0);return 0;
}

《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合相关推荐

  1. 原创 OpenCV3编程入门 学习笔记(总)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...

  2. OpenCV3编程入门 学习笔记(总)

    OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...

  3. Opencv3编程入门学习笔记(五)之通道分离(split)与合并(merge)

    若要对Opencv中(BGR)颜色通道进行单一处理,那必然会涉及到通道分离(split)与合并(merge).那么本篇博客笔者记录了两个方法的使用方法和案例.案例来源于<Opencv3编程入门学 ...

  4. 《OpenCV3编程入门》学习笔记5 Core组件进阶(六)输入输出XML和YAML文件

    第5章 Core组件进阶 5.6 输入输出XML和YAML文件 5.6.1 XML和YAML文件 XML和YAML是使用非常广泛的文件格式,可以利用XML或者YAML式的文件存储和还原各种数据结构,还 ...

  5. 《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)

    第5章 Core组件进阶 5.5 离散傅里叶变换(Discrete Fourier Transform,DFT) 5.5.1 离散傅里叶变换原理 1.对一张图像使用傅里叶变换就是把它分解成正弦和余弦, ...

  6. 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整

    第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...

  7. 《OpenCV3编程入门》学习笔记5 Core组件进阶(三)分离合并颜色通道

    第5章 Core组件进阶 5.3 分离&合并颜色通道 5.3.1 通道分离:split()函数 1.作用:将一个多通道数组分离成几个单通道数组,公式: 2.原型:(1)void split(c ...

  8. 《OpenCV3编程入门》学习笔记5 Core组件进阶(一)访问图像中的像素

    第5章 Core组件进阶 5.1 访问图像中的像素 5.1.1 图像在内存中的存储方式 1.图像矩阵大小取决于通道数,矩阵中的子列个数与通道数相等. 2.如果内存足够大,可以实现连续存储,有助于提升图 ...

  9. 【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV

    邂逅OpenCV 文章目录 邂逅OpenCV 前言 1.1 OpenCV周边概念认知 1.1.1 图像处理.计算机视觉与OpenCV 1.1.2 OpenCV概述 1.1.3 起源及发展 1.1.4 ...

最新文章

  1. 基于mimeTex的数学公式Webservice的部署和实现
  2. Scala的类和对象
  3. 基于javaweb mvc模式的图书馆管理系统(不含框架)
  4. Bootstrap3 轮番插件的使用方法
  5. resultAPI示例
  6. python中if语句的实例_Python基础入门-IF语句
  7. NetApp S550:做“小”的艺术
  8. paip.支付宝即时到账接口改双功能接口.txt
  9. win98 支持html5,90后第一次接触Windows98,20多年了,居然还有人使用!
  10. wps qt linux,小试牛刀 WPS for Linux beta1文字试用
  11. [Unity]CutScene工具Cinema Suite Rotion 角度不能负数方向旋转的bug修正。
  12. 关于树莓派(一):如何让树莓派和笔记本直连SSH
  13. 好看的热力图seaborn.heatmap配色
  14. GB/T28181-2022图像抓拍规范解读及技术实现
  15. 企业级网络架构—云平台高可用网络的修炼之道
  16. 从屏下指纹到体感手机,vivo能否走出自己的创新之路?
  17. ISO26262 功能安全(1)--概览学习
  18. 英雄联盟手游正式上线啦
  19. PAT甲级 1037(C++)
  20. unity实战——穿越火线

热门文章

  1. 2022-2028年中国FEP薄膜行业市场发展规模及市场分析预测报告
  2. zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器
  3. HA: Dhanush靶机渗透测试
  4. TensorFlow与PyTorch模型部署性能比较
  5. 自动驾驶解决方案架构
  6. MinkowskiEngine多GPU训练
  7. 交换机应用寻找10个完美的因素
  8. 生成性对抗网络技术实现
  9. C++ 获取内存地址(取值运算符)
  10. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法