opencv两张图片叠加显示
详细流程:
- (一)、线性混合操作:使用addWeighted()
- 1、代码
- 2、说明
- 3、图片效果
- (二)、使用roi和mask方式
- 1、代码
- 2、说明
- 3、图片效果
(一)、线性混合操作:使用addWeighted()
1、代码
#include<opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;int main(int argc, char *argv[]) {Mat image, imagesrc1, imagesrc2;imagesrc1 = cv::imread("../data/test1.jpg");//读取图像1imagesrc2 = cv::imread("../data/test2.jpg");//读取图像2//判断读入是否成功if (!imagesrc1.data | !imagesrc2.data) {std::cout << "打开图片失败,请检查路径!" << std::endl;return 0;}//调整image2的大小与image1的大小一致,融合函数addWeighted()要求输入的两个图形尺寸相同resize(imagesrc2, imagesrc2, Size(imagesrc1.cols, imagesrc1.rows));addWeighted(imagesrc1, 0.3, imagesrc2, 0.7, 0, image);//0.5+0.5=1,0.3+0.7=1imshow("效果图", image);//建立显示窗口namedWindow("效果图");imwrite("../save/fuse.png", image);waitKey();return 0;
}
2、说明
1、先读取两张图;
2、调整image2的大小与image1的大小一致,融合函数addWeighted()要求输入的两个图形尺寸相同;
3、addWeighted(imagesrc1, 0.3, imagesrc2, 0.7, 0, image);这一行是给两张图片分别赋予权重,只要给的两个权重加起来等于1即可;
4、显示效果图;
5、写入处理之后的图片。
3、图片效果
(二)、使用roi和mask方式
1、代码
void GenerateRendering(Mat &srcImage, Mat &IC, Mat &IP, Mat &rending) {Mat mask1, mask2, tmp;IP.copyTo(mask1);IC.copyTo(mask2);//绿色通道分离出来vector<Mat> channels;Mat imageGreenChannel;//1Mat imageRedChannel;//2Mat greenmerge;split(IP, channels);//分离色图像色彩通道,则三通道图像成为三个单通道图像imageGreenChannel = channels.at(1);channels[0] = Mat::zeros(Size(IP.rows, IP.cols), CV_8UC1);channels[2] = Mat::zeros(Size(IP.rows, IP.cols), CV_8UC1);merge(channels, greenmerge);//再抠掉greenmerge.copyTo(srcImage, mask1);srcImage.copyTo(tmp);//红色通道分离出来vector<Mat> channels1;Mat redmerge;split(IC, channels1);//分离色图像色彩通道,则三通道图像成为三个单通道图像imageRedChannel = channels1.at(2);channels1[0] = Mat::zeros(Size(IP.rows, IP.cols), CV_8UC1);channels1[1] = Mat::zeros(Size(IP.rows, IP.cols), CV_8UC1);merge(channels1, redmerge);//再抠掉IC将红色粘上去redmerge.copyTo(tmp, mask2);tmp.copyTo(rending);
}
2、说明
1、先读取3张图;
2、类似于抠图那种将图片加上去
重要的是这个函数: greenmerge.copyTo(srcImage, mask1);
3、图片效果
opencv两张图片叠加显示相关推荐
- css将两张图片叠加(简易方法)
@开启博客之旅,记录生活 css将两张图片叠加 本质上的原理其实是,一个作为背景图片,另一个作为DOM节点元素添加进去.这是我本人的第一篇正式博客,我觉得,现在分享学习到的知识还不晚.刮风了,待会去吃 ...
- 学习如何使用html和css样式将两张图片叠加到另一张图片上,实现微信扫一扫二维码效果
学习如何使用html和css样式将两张图片叠加到另一张图片上,实现微信扫一扫二维码效果 <!DOCTYPE html> <html> <head><meta ...
- indesign选中不了图片删除_公众号文章排版,如何让两张图片并排显示?
最近,有很多小伙伴在交流群里问,怎么才能让两张图片并排显示呢?图片一上传就会占满整个空间,或者直接处于正中位置,如果你也有类似的困惑,不知道该怎么做的话,就认真看下面带来的方法吧,非常使用哦~ 方法一 ...
- Unity3D-Shader之两张图片叠加并且通过颜色调控
最近项目需要做一个图片叠加在一个模型上,而且还需要通过调整颜色改变两个图片的颜色和透明程度. 另外,还需要一个调控值,管理两张图片是否完全显示,Shader如下: Shader "Unlit ...
- css两张图片重叠显示
很多时候我们需要做一些多张图片重叠显示的效果,例如商品列表中 图片上放置已售磬 已下架等标识,很多时候不少初学者不知如何操作,下面就由我来告诉你如何操作 第一步:做一个div容器,把需要重叠显示的图片 ...
- android 中关于两张图片叠加方法(记录)
最近在做一个小的Android项目中遇到一个问题,就是不知道为什么机器输出的分辨率不稳定,总是有几十个像素的误差.导致屏幕适配出现了问题.这次主要记录一下解决思路. 问题就如图 主要是一张背景图 ,在 ...
- 嵌入式c c++开发笔记(opencv两图像叠加)
两图像叠加 可以是两个图片,也可以是视频和图片 先引用头文件 #include <opencv2/opencv.hpp> // Include OpenCV API #include &l ...
- 使用Vue将两张图片叠加再保存为一张图片下载
最终效果 将一张课程图片和一张二维码图片叠加(网上图片随便乱找,勿对号入座!!!) 步骤 先将两张图片使用css进行叠加,然后按照自己需求将图片移动到合理位置 要使用到一个插件将两张图片转为canva ...
- opencv两张图片找不同
牙叔教程 简单易学 使用场景 两张图片找不同, 大家来找茬之类的 效果展示 autojs版本 8.8.7-0 get知识点 灰度 图片做减法 高斯滤波 闭运算( 先膨胀, 再腐蚀 ) 查找轮廓 查找最 ...
最新文章
- 完整的Blender三维课程:素描到三维艺术的初学者
- pcre安装_Nginx学习_第一期_安装及安装问题解决
- gitignore 文件生效办法
- golang中的panic
- OpenCV条形码识别
- oracle强制切换redolog组
- P5327-[ZJOI2019]语言【线段树合并,LCA】
- python语音库_Python中的Python文本到语音
- 中国小伙CVPR 18论文遭质疑:同行难复现,要求评议组撤稿
- 单元测试基本路径覆盖法(转)
- 基于HEVC的UHD(超高清4K)视频质量评价
- 服务器网站出现service,网站出现service unavailable的解决方法
- 金字塔原理(Pyramid Principle)
- android模拟器连接不到本地服务器
- day19-爬虫和前端
- java统计英文单词_java单词统计
- ps2键盘测试软件,PS2键盘51测试程序2
- 【云扩RPA】HowToEmailAutomation
- 【构成L1笔记:飞行道具】
- Googleearth提取数字高程等高线