《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加图像混合
第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区域图像叠加图像混合相关推荐
- 原创 OpenCV3编程入门 学习笔记(总)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...
- OpenCV3编程入门 学习笔记(总)
OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...
- Opencv3编程入门学习笔记(五)之通道分离(split)与合并(merge)
若要对Opencv中(BGR)颜色通道进行单一处理,那必然会涉及到通道分离(split)与合并(merge).那么本篇博客笔者记录了两个方法的使用方法和案例.案例来源于<Opencv3编程入门学 ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(六)输入输出XML和YAML文件
第5章 Core组件进阶 5.6 输入输出XML和YAML文件 5.6.1 XML和YAML文件 XML和YAML是使用非常广泛的文件格式,可以利用XML或者YAML式的文件存储和还原各种数据结构,还 ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)
第5章 Core组件进阶 5.5 离散傅里叶变换(Discrete Fourier Transform,DFT) 5.5.1 离散傅里叶变换原理 1.对一张图像使用傅里叶变换就是把它分解成正弦和余弦, ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(三)分离合并颜色通道
第5章 Core组件进阶 5.3 分离&合并颜色通道 5.3.1 通道分离:split()函数 1.作用:将一个多通道数组分离成几个单通道数组,公式: 2.原型:(1)void split(c ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(一)访问图像中的像素
第5章 Core组件进阶 5.1 访问图像中的像素 5.1.1 图像在内存中的存储方式 1.图像矩阵大小取决于通道数,矩阵中的子列个数与通道数相等. 2.如果内存足够大,可以实现连续存储,有助于提升图 ...
- 【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV
邂逅OpenCV 文章目录 邂逅OpenCV 前言 1.1 OpenCV周边概念认知 1.1.1 图像处理.计算机视觉与OpenCV 1.1.2 OpenCV概述 1.1.3 起源及发展 1.1.4 ...
最新文章
- 基于mimeTex的数学公式Webservice的部署和实现
- Scala的类和对象
- 基于javaweb mvc模式的图书馆管理系统(不含框架)
- Bootstrap3 轮番插件的使用方法
- resultAPI示例
- python中if语句的实例_Python基础入门-IF语句
- NetApp S550:做“小”的艺术
- paip.支付宝即时到账接口改双功能接口.txt
- win98 支持html5,90后第一次接触Windows98,20多年了,居然还有人使用!
- wps qt linux,小试牛刀 WPS for Linux beta1文字试用
- [Unity]CutScene工具Cinema Suite Rotion 角度不能负数方向旋转的bug修正。
- 关于树莓派(一):如何让树莓派和笔记本直连SSH
- 好看的热力图seaborn.heatmap配色
- GB/T28181-2022图像抓拍规范解读及技术实现
- 企业级网络架构—云平台高可用网络的修炼之道
- 从屏下指纹到体感手机,vivo能否走出自己的创新之路?
- ISO26262 功能安全(1)--概览学习
- 英雄联盟手游正式上线啦
- PAT甲级 1037(C++)
- unity实战——穿越火线