图像的叠加、混合、分离
图像的叠加、混合、分离
1 感兴趣区域ROI
ROI(region of interest)感兴趣区域,在图像处理过程中,有时候我们希望对图像中的某些区域进行处理,也就是仅对某些区域感兴趣,那么我们就可以定义我们的ROI区域。
方法:定义一个Rect来表示或指定行列范围。
Mat roi1, rot2;
// 左上角
roi1 = img(Rect(0, 0, img.cols / 2, img.rows / 2));
// 右下角
rot2 = img(Range(img.rows/2 , img.rows), Range(img.cols/2, img.cols));
imshow("roi1", roi1);
imshow("rot2", rot2);
注意此时的roi1就是属于img的一部分了,它的改变会改变img。它只是对img某个区域的引用。
例:
#include "QtGuiApplication1.h"//#define Ui
#ifndef Ui#include <QFileInfo>
#include <QDir>
#include <opencv2\opencv.hpp>
using namespace cv;#else#include <QtWidgets/QApplication>#endifint main(int argc, char *argv[])
{QApplication a(argc, argv);#ifdef UiQtGuiApplication1 w;w.show();return a.exec();
#elseQString path = QFileInfo(QCoreApplication::applicationDirPath(), "../../../../../").absoluteDir().absolutePath() + "/imgs/";Mat sorImg = imread(path.toStdString() + "sor1.jpg", IMREAD_GRAYSCALE);Mat logImg = imread(path.toStdString() + "log.jpg", IMREAD_GRAYSCALE);imshow("sorImg", sorImg);imshow("logImg", logImg);Rect roiRegion(0, 0, logImg.cols, logImg.rows);Mat roi = sorImg(roiRegion);logImg.copyTo(roi); imshow("dstImg", sorImg);waitKey();return 0;
#endif}
效果图:在图片的左上角打上了一个logo。
2 线性混合
在图片处理软件中经常看到两幅图片的叠加,其实原理很简单,就是两幅图像素值的加权叠加。一个公式说明原理:
g=f0*(1-a)+a*f1 其中g是目标图像,f0、f1是两幅进行叠加的图片。a是权重范围是(0-1)。 通过公式就可以看出这是基于像素点的操作,自己很容易实现,openCv也提供了API先上例子。
#include "QtGuiApplication1.h"//#define Ui
#ifndef Ui#include <QFileInfo>
#include <QDir>
#include <opencv2\opencv.hpp>
using namespace cv;#else#include <QtWidgets/QApplication>#endifint main(int argc, char *argv[])
{QApplication a(argc, argv);#ifdef UiQtGuiApplication1 w;w.show();return a.exec();
#elseQString path = QFileInfo(QCoreApplication::applicationDirPath(), "../../../../../").absoluteDir().absolutePath() + "/imgs/";Mat src1 = imread(path.toStdString() + "sor1.jpg", IMREAD_UNCHANGED);Mat src2 = imread(path.toStdString() + "sor2.jpg", IMREAD_UNCHANGED);imshow("src1", src1);imshow("src2", src2);Mat dst;addWeighted(src1, 0.5, src2, 0.5,0, dst);imshow("dst", dst);waitKey();return 0;
#endif}
效果图:这是一个美女和一幅风景画的叠加。
API:
void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype = -1);
参数:src1:叠加图像1。
alpha:叠加图像1的权重。
src2:叠加图像2。
beta:叠加图像2的权重。
gamma:整体亮度偏移量。
dst:目标输出图像。
值得注意的是:
两幅图像尺寸类型必须的一致,若果两幅图像不一致,那先用ROI提取尺寸较小的图像再来叠加吧。
虽然没有强制两个权重相加必须为1,但通常都是那么干的。
3 图像通道分离、混合
顾名思义,这是针对多通道图像的,例如彩色图像。啥也不说给出API即懂。
void split(InputArray m, OutputArrayOfArrays mv);
void merge(InputArrayOfArrays mv, OutputArray dst);
void mixChannels(InputArrayOfArrays src, InputOutputArrayOfArrays dst,
图像的叠加、混合、分离相关推荐
- matlab动态混合纹理,15组动态背景纹理素材AE模板,可与图像叠加混合
您当前浏览器不支持本地视频播放~ 视频无法播放?点击切换线路>> [默认线路] [备用线路] 说到动态纹理贴图,可能还有些小伙伴不太了解,其实动态纹理素材的运用是非常广泛的,纹理素材多以粒 ...
- youcans 的 OpenCV 学习课—4.图像的叠加与混合
youcans 的 OpenCV 学习课-4.图像的叠加与混合 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 本节介绍图像的加法.叠加与混合,提供完整例程和运行结果:加法 ...
- 图像低频高频区域分离 小波变换
图像低频高频区域分离 简介 本篇整理记录利用小波分离图像的高频.低频部分信息. 具体实现 实现代码参考资料:小波变换 C++ opencv 实现. 小波变换 小波生成和参考资料中一致.小波变换中,首先 ...
- 【OpenCV 例程200篇】21. 图像的叠加
[OpenCV 例程200篇]21. 图像的叠加 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 两张图像直接进行加法 ...
- ITK:在图像上叠加标签图
ITK:在图像上叠加标签图 内容提要 输出结果 C++实现代码 内容提要 在图像上覆盖LabelMap. 输出结果 C++实现代码 #include "itkBinaryImageToLab ...
- 【MATLAB】绘制三角函数曲线、图像的叠加
目录 1.三角函数曲线 2.图像的叠加 1.三角函数曲线 h0=figure('toolbar','none',...'position',[198 56 350 300],...'name','实例 ...
- 计算机视觉 Project 1:图像滤波和混合图像
计算机视觉 Project 1:Image Filtering and Hybrid Images 计算机视觉 Project 1:Image Filtering and Hybrid Images ...
- 【OCR】图像预处理-文字背景分离方法
1. 摘要 在OCR处理文档时,经常会遇到自然拍照场景中由于光照强度不一.拍摄角度不同.相机成像元件差异,因此会导致拍摄的图片与扫描文档存在较大区别.为使文档文字内容更加鲜明,便于后续特征提取,本文目 ...
- OpenCV(九)—————图像通道合并与分离(C++)
1.分离 将一张图像分别分成三个通道的图像. 使用split()函数,分离之后的数据存到一个Mat对象的容器中. #include <opencv2/opencv.hpp> #includ ...
最新文章
- mac 不显示 外接屏幕_Mac移动硬盘热拔(直接拔掉)后,再插上不显示移动硬盘解决办法...
- Tomcat内存溢出解决方案
- ReactNative ViewPageAndroid组件详解
- “史上最全PyTorch资源汇总“(转载)
- svpwm仿真_案例12:三相三线PWM整流仿真建模
- 爱鲜蜂签约神策数据 让精细化运营落地企业
- Keras Tutorial: Deep Learning in Python
- 【 .NET Core 3.0 】框架之九 || 依赖注入 与 IoC
- python切片的对象_Python 对象切片
- zabbix api python使用
- 实验2-3-7 求平方与倒数序列的部分和 (C语言)
- 小程序 css框架,微信小程序_如何支持Less等CSS框架开发
- CephOpenstack结合说明操作
- Git版本控制管理(七)--提交和查看提交历史
- 龙格库塔算法原理详解
- python excel 单元格换行_数据标准化 使用Python脚本处理excel单元格换行符
- matlab 固态 机械_电脑是固态+机械硬盘好??纯固态硬盘好?
- 微信小程序_在当前页面刷新数据 / 重载当前页面
- SolidWorks2020绘制XT60PW-M模型
- #汇编语言字符串的输出(dosbox运行时输出乱码问题解决)
热门文章
- 腾讯云轻量云服务器体验
- Oracle10g日期型函数
- 利用Kali进行WiFi钓鱼测试实战
- 淘宝api接口手把手教你傻瓜式操作
- jc机制是什么_王者荣耀JC纵情吐槽排位机制官方光速回应 而玩家却无人理 - 游戏新闻 - 神游网...
- 哈佛计算机系小哥哥中文字幕,【哈佛学霸小哥哥的一天】同样的24小时,为什么他们更优秀...
- 同一台机器不同的sata线居然传输率不同
- 鸿蒙申请智慧屏sn号,采用鸿蒙系统的荣耀智慧屏正式亮相
- linux系统网络连接不上的解决办法
- LWN:利用page folio来明确内存操作!