opencv两张图片叠加显示

article/2025/10/27 16:47:53

详细流程:

  • (一)、线性混合操作:使用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、图片效果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/LJ2pCMrp.shtml

相关文章

html怎么使两张照片重叠,怎样把两张图片叠加在一起?

用手机后期的“双重曝光”功能&#xff0c;可以实现将两张图片叠加的效果&#xff0c;操作非常简单。比如&#xff1a;让人物剪影站在海面的效果 是由一张“海面背景图人物剪影”&#xff0c;两张图片合成&#xff1a; 为了让人物看上去更融入环境&#xff0c;后期加上“人物倒…

第7章第23节:双图排版:两张图片的错位叠加 [PowerPoint精美幻灯片实战教程]

本节演示图片错位叠加的排版方式,首先在此处按下并向左上方拖动,将图片移到另一张图片的上方。 在此处按下并向右下方拖动,以放大图片的尺寸,从而更容易形成图片叠加的效果。 接着来处理另一张图片。 在此处按下并向右下方拖动,将图片移到上面图片的右下方,并和上面的…

chatgpt赋能python:Python如何将两张图片叠加

Python如何将两张图片叠加 介绍 图像处理是计算机视觉领域的重要应用&#xff0c;而Python已经成为了图像处理中最流行的编程语言之一。在图像处理的过程中&#xff0c;有时需要将两张图片叠加在一起&#xff0c;这就需要用到Python中的图像叠加技术。 本文将介绍Python中如…

SQL分表

分表 分表是因为当一张表的数据量比较多时&#xff0c;但是我们只需要查询其中的某个字段数据&#xff0c;就会导致查询效率降低&#xff0c;这时可以将所查询的字段数据存到另一个表里 goods表 创建一个商品分类表 查询goods表中的cate_name并插入到商品分类表里 INSERT I…

java 分表操作_Mybatis Plus 分表操作

大家都知道没到万不已就不分表分库,我也是没有办法,先不使用中间件实现简单的分表操作。可根据实际情况来分表,我现在要分的就是运动穿戴设备的运动数据,单次运动对应多个运动轨迹记录,有运动表(watch_sport)和运动详情表(watch_sport_detail),数据量比较大的就是运动详情…

mysql年月分表_MySQL 按日期分表

一、表不存在时则创建 之前做项目实在是太赶了&#xff0c;很多东西都没记录。是时候补回来了 MySQL做一个大表&#xff0c;由于要存历史记录&#xff0c;所以数据量很大&#xff0c;查询很慢。恰好查询的时候&#xff0c;又不需要时间太久的冷数据。现在将其实现原理提取成一个…

ShardingJdbc分表

ShardingJdbc分表 前言一、ShardingJdbc分表1.引入maven依赖2.yml配置2.分表功能测试 总结 前言 ShardingJdbc官网 下载链接 快速入门 官网原话&#xff1a; Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈&#xff0c;它由 JDBC、Proxy 和 Sidecar&…

Java如何实现分库分表

一、为啥要分库分表 在大型互联网系统中&#xff0c;大部分都会选择mysql作为业务数据存储。一般来说&#xff0c;mysql单表行数超过500万行或者单表容量超过2GB&#xff0c;查询效率就会随着数据量的增长而下降。这个时候&#xff0c;就需要对表进行拆分。 那么应该怎么拆分…

mysql 垂直分表 设计_水平分表和垂直分表

一、数据库瓶颈 不管是IO瓶颈&#xff0c;还是CPU瓶颈&#xff0c;最终都会导致数据库的活跃连接数增加&#xff0c;进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是&#xff0c;可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、…

ShardingSphere分库分表

ShardingSphere是一款起源于当当网内部的应用框架。2015年在当当网内部诞生&#xff0c;最初就叫ShardingJDBC。2016年的时候&#xff0c;由其中一个主要的开发人员张亮&#xff0c;带入到京东数科&#xff0c;组件团队继续开发。在国内历经了当当网、电信翼支付、京东数科等多…

mysql innodb分表技术_mysql分表技术

一般来说&#xff0c;当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了&#xff0c;这次我来详细说说分表的一些方法。 目前我所知道的方法都是MYISAM的&#xff0c;INNODB如何做分表并且保留事务和外键&#xff0c;我还不是很了解。 首先&#xff0c;我们需…

mybatis实现分表

分析上面登陆&#xff0c;当前表按照年份分表了&#xff0c;最大的一张表超过500w建议分表 注意:之前写的经过多方测试发现遍历的时候参数传递不进去&#xff0c;现如今已经完善 package org.jeecg.config.mybatis;import lombok.extern.slf4j.Slf4j; import org.apache.ibati…

mysql 分表条件_mysql分表详解

本人混迹qq群2年多了&#xff0c;经常听到有人说“数据表太大了&#xff0c;需要分表”&#xff0c;“xxxx了&#xff0c;要分表”的言论&#xff0c;那么&#xff0c;到底为什么要分表&#xff1f; 难道数据量大就要分表&#xff1f; mysql数据量对索引的影响 本人mysql版本为…

ShardingSphere简介与分表使用

一、ShardingSphere简介 1、简介 ShardingSphere 已于 2020 年 4 月 16 日成为 Apache 软件基金会的顶级项目。 ShardingSphere 是一套开源的分布式数据库中间件解决方案。 ShardingSphere 产品定位为 Database Plus&#xff0c;旨在构建异构数据库上层的标准和生态圈。 它…

mysql mybatis分表查询_mybatis 自动分表

参考: 相关源码已上传至我的 github 欢迎转载,转载请注明出处,尊重作者劳动成果:https://www.cnblogs.com/li-mzx/p/9963312.html 前言 小弟才疏学浅,可能很多问题也没有考虑到,权当抛砖引玉,希望各位大神指点 项目背景: 希望做一个功能,能在sql操作数据库时,根据某个…

mysql 分区分表_mysql分库分区分表

一、分表 分表分为水平分表和垂直分表。 水平分表原理&#xff1a; 分表策略通常是用户ID取模&#xff0c;如果不是整数&#xff0c;可以首先将其进行hash获取到整。 水平分表遇到的问题&#xff1a; 1. 跨表直接连接查询无法进行 2. 我们需要统计数据的时候 3. 如果数据…

Mock平台介绍

Mock平台可以用来模拟接口&#xff0c;具备了get方法&#xff0c;post方法&#xff0c;header&#xff0c;cookie&#xff0c;重定向等功能。 Mock平台的搭建应用于mock框架&#xff0c;在github上可以下载到开源的代码。 下载地址&#xff1a;http://repo1.maven.org/maven2/…

Mock 框架 Moq 的使用

Intro# Moq 是 .NET 中一个很流vb.net教程行的 Mock 框架&#xff0c;使c#教程用 Mock 框架我python基础教程们可以只针对我java基础教程们关注的代码进行测试&#xff0c;对于sql教程依赖项使用 Mock 对象配置预期的依赖服务的行为。 Moq 是基于 Castle 的动态代理来实现的&…

mockjs入门

mockjs 1,mock.js是什么&#xff1f; mockjs是生成随机数据的一款前端工具&#xff0c;用来模拟 Ajax 请求&#xff0c;生成并返回模拟数据 2&#xff0c;为什么用mockjs&#xff1f; 当程序员做项目开发时&#xff0c;前端工程师要请求后端做好的数据时&#xff0c;有可能…

monkey简介

https://blog.csdn.net/lebang08/article/details/70858532 https://www.cnblogs.com/aland-1415/p/6949964.html https://blog.csdn.net/aisemi/article/details/55254348 一、Monkey 简介 monkey是Android SDK中自带的一个命令行工具&#xff0c;使用Java语言写成&#xf…