opencv两张图片叠加显示

2023-10-30

(一)、线性混合操作:使用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");//读取图像1
    imagesrc2 = 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=1
    imshow("效果图", 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;//1
    Mat  imageRedChannel;//2
    Mat 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、图片效果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv两张图片叠加显示 的相关文章

  • Android for OpenCV - 打开跟踪文件时出错,UnsatisfiedLinkError

    我对 Android 开发和 OpenCV 都是新手 我从 Android 下载了 OpenCV 库http sourceforge net projects opencvlibrary files opencv android http
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 使用opencv+picamera流IO用树莓派捕获视频

    我使用 Raspberry 来简单地显示一个视频 目前仅此 为此 我必须使用 opencv cv2 我尝试了很多解决方案 但现在我想使用 Picamera 库捕获视频 我将向您展示我的代码 import io import time imp
  • 类型错误:只有长度为 1 的数组可以转换为 Python 标量

    我是 openCV 的初学者 正在尝试分析数独求解器的现有代码 有这一段代码会引发错误 samples np float32 np loadtxt feature vector pixels data responses np float3
  • 如何平滑循环列向量

    这是一个 OpenCV2 问题 我有一个矩阵代表closed空间曲线 cv Mat
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 在 HSV 颜色空间内定义组织学图像掩模的颜色范围(Python、OpenCV、图像分析):

    为了根据颜色将组织学切片分成多个层 我修改了 OpenCV 社区提供的一些广泛分布的代码 1 我们的染色程序用不同的颜色标记组织横截面的不同细胞类型 B 细胞为红色 巨噬细胞为棕色 背景细胞核为蓝色 I m interested in se
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 多线程中的 OpenCV CascadeClassifier C++ 接口

    我想在多个线程中使用 CascadeClassifier 对象运行 OpenCV C 接口 我的程序的工作方式是我的主线程将 some file xml 加载到 CascadeClassifier 对象中 生成三个或更多线程并向它们传递级联
  • Django manage.py runserver 优雅重载

    我正在开发一个 Django 项目 它集成了网络摄像头和 OpenCV 对于网络摄像头访问 我使用以下代码 如果我使用的话 网络摄像头可以被释放Ctrl C结束正在运行的服务器 但如果服务器在代码更改后重新加载 则网络摄像头无法正确释放 因
  • 如何用OpenCV绘制圆角矩形(带圆角的矩形)?

    如何在 OpenCV 中绘制圆角矩形 我知道函数 ellipse 和 line 可以简单地放在一起来绘制它 我只是想知道是否有人以前做过并将其放入适当的函数中以便我可以使用它 理想情况下 拐角半径是在参数中校准的 我搜索了很多 但似乎以前没
  • 在Opencv Python中将RGB图像转换为YUV和YCbCr颜色空间图像

    谁能帮我使用 opencv Python 将 RGB 颜色空间图像转换为 YUV 颜色空间图像和 YCbCr 颜色空间图像 Use cv2 cvtColor src code 要转换颜色空间 代码以COLOR 您可以使用它来查找颜色代码 i
  • OpenCV argc 和 argv 混淆

    我正在检查一些 OpenCV 教程 并在开头找到了这一行 这是链接 代码位于 CalcHist 部分下http opencv willowgarage com documentation c histograms html http ope
  • FindFundamentalMatrix 未找到基本矩阵

    我正在尝试使用以下方法恢复相机的运动 基本矩阵 以及给出的算法维基百科 https en wikipedia org wiki Fundamental matrix computer vision 为了 我需要找到基本矩阵 我在用OpenC
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi

随机推荐

  • vue中下载文件使用file-saver,文件错误excel无法打开

    最近使用到了file saver下载文件 通过axios调接口拿文件数据 再通过file saver下载文件 但就在我成功下载文件并打开时 提示这个信息 主要的原因就是没有设置响应的文件流类型为 blob 加上后就可以打开了
  • FreeRTOS config开始的宏

    FreeRTOSConfig h系统配置文件中可以自定义 FreeRTOS h中定义默认值 configAPPLICATION ALLOCATED HEAP 默认情况下FreeRTOS的堆内存是由编译器来分配的 将宏configAPPLIC
  • 基于flask做的用户注册界面一(无后台接收,无数据库)

    1 init py文件界面 再此声明 完全是个人问题 一般 init py不能这样用 init py文件 from flask import Flask app Flask name debug True import apps view
  • springboot(2.1.1.RELEASE)启用jdk动态代理(默认启用cglib)的方法

    大前提 该类必须实现了某个接口 其他类使用注解引用该类时 必须基于其实现的接口类型注入 否则注入不成功 方式1 启动类上注解如下设置 SpringBootApplication exclude AopAutoConfiguration cl
  • 两幅有偏差的影像同坐标的地物不一定一样

    第一幅图上 如果经纬度100 100上是只狗 那么另外一个图上同经纬度不一定有狗了 是有偏差的
  • centos 6.5 安装JDK 7

    安装说明 系统环境 centos 6 3 安装方式 rpm安装 软件 jdk 7 linux x64 rpm 检验系统原版本 root admin java version 进一步查看JDK信息 root admin rpm qa grep
  • java中字节流的分类都有哪些_Java------字节流和字符流(I)

    字节流 读写字节文件 通常使用字节流 如 二进制文件 jpg mp3 avi exe com dll windows平台的执行文件 exe com dll 字符流 读写字符文件 通常使用字符流 如 txt java css doc html
  • MAE入局多模态分析,CMU联合微软发布仅需文本监督的视觉语言新模型VLC

    原文链接 https www techbeat net article info id 3677 作者 seven 论文链接 https arxiv org abs 2205 09256 代码链接 https github com guil
  • 使用vite快速安装项目(SyntaxError:Unexpected reserved word?)

    前提环境 需要安装nodejs和npm 并且nodejs版本必须在16以上 安装vite 打开命令窗口 执行命令 npm install vite g 1 2 如果执行该命令报错 SyntaxError Unexpected reserve
  • gjb1188a

    unsigned short VerifyWord1188A unsigned short data 32 unsigned long len unsigned char i 0 unsigned short verifyWord 0 fo
  • numpy的相关使用方法

    20210211 引言 之前的时候 一些关于numpy的内容都记录在另一篇文章中 pandas及numpy 常用操作 里面大部分都是pandas的操作 但是最近使用numpy比较多了之后 也积累了一些内容 所以这里专门记录一下 内容列表 拼
  • 计算机二级题目之数组学习

    1 下列给定程序中 函数fun的功能是 用冒泡法对6个字符串按由小到大的顺序进行排序 请改正程序中的错误 使它能得出正确的结果 include
  • (16)pandas多层级索引的访问

    import numpy as np import pandas as pd from pandas import Series DataFrame 内容 Series数组 DataFrame数组 构建一个多层级索引 构造一个多维索引 in
  • C++异常处理

    一 异常处理定义 异常是程序在执行期间产生的问题 任何事物 任何情况都可以当做异常 错误算是异常的一种 C 异常是指在程序运行时发生的特殊情况 比如尝试除以零的操作 异常处理机制 暂时性不做处理 抛出异常 留给使用者去处理 异常提供了一种转
  • react调用model层的接口(dispatch)在组件中获取接口返回状态

    我们调用model层的接口 然后在组件中获取接口返回的数据 逻辑通常是 在model层写好了逻辑 去获取或者计算接口返回数据 然后组件再引入这个model层中的数据 在组件中dispatch这个接口就行 但是我现在在组件中调用这个接口后 我
  • python import模块方法

    python包含子目录中的模块方法比较简单 关键是能够在sys path里面找到通向模块文件的路径 下面将具体介绍几种常用情况 1 主程序与模块程序在同一目录下 如下面程序结构 src mod1 py test1 py 若在程序test1
  • egg jwt token生成以及验证拦截

    1 安装egg jwt npm install egg jwt save 2 配置 config plugin js jwt jwt插件启用 enable true package egg jwt config config default
  • Linux(基础IO、文件权限、Makefile)

    目录 1 man 手册 1 1 汉化 1 2 具体使用 2 文件权限 2 1 权限理解 2 2 文件详细信息查询 2 3 权限更改 3 常用函数接口 3 1 open 3 2 read 3 3 write 3 4 close 3 5 函数使
  • 二分查找总结——左闭右开区间和左闭右闭区间(C++语言)

    二分查找 1 左闭右开区间 如有相同元素返回查找到的第一个元素 PS 主循环判断条件都是一样的 left lt right 注意这里不能取等号 有相同元素时 如果要返回第一个查找到的元素 则区间包含相同元素时应该从右向左收缩 这时判断条件应
  • opencv两张图片叠加显示

    详细流程 一 线性混合操作 使用addWeighted 1 代码 2 说明 3 图片效果 二 使用roi和mask方式 1 代码 2 说明 3 图片效果 一 线性混合操作 使用addWeighted 1 代码 include