OpenCV杂项图像变换(2)线性混合函数blendLinear()的使用

news2024/9/27 6:44:57
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

执行两个图像的线性混合:
dst ( i , j ) = weights1 ( i , j ) ∗ src1 ( i , j ) + weights2 ( i , j ) ∗ src2 ( i , j ) \texttt{dst}(i,j) = \texttt{weights1}(i,j)*\texttt{src1}(i,j) + \texttt{weights2}(i,j)*\texttt{src2}(i,j) dst(i,j)=weights1(i,j)src1(i,j)+weights2(i,j)src2(i,j)
blendLinear 函数是 OpenCV 中用于实现线性混合的一种方法。这个函数可以将多个图像按照指定的权重进行混合,生成一个新的图像。这对于图像融合或者创建过渡效果非常有用。

函数原型


void cv::blendLinear	
(
	InputArray 	src1,
	InputArray 	src2,
	InputArray 	weights1,
	InputArray 	weights2,
	OutputArray 	dst 
)		

参数

  • 参数src1 它的类型为 CV_8UC(n) 或 CV_32FC(n),其中 n 是一个正整数。
  • 参数src2 它具有与 src1 相同的类型和大小。
  • 参数weights1 它的类型为 CV_32FC1 并且与 src1 具有相同的大小。
  • 参数weights2 它的类型为 CV_32FC1 并且与 src1 具有相同的大小。
  • 参数dst 如果它没有与 src1 相同的大小和类型,则会创建它。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main(int argc, char** argv)
{
    // 读取图像
    Mat image1 = imread("/media/dingxin/data/study/OpenCV/sources/images/top.jpg");
    Mat image2 = imread("/media/dingxin/data/study/OpenCV/sources/images/bottom.jpg");

    if (image1.empty() || image2.empty()) {
        std::cerr << "Error: Could not open or find the images." << std::endl;
        return -1;
    }

    // 确保两个图像的大小一致
    if (image1.size() != image2.size()) {
        std::cerr << "Error: Images must have the same size." << std::endl;
        return -1;
    }

    cv::resize(image2, image2, image1.size());

    // 创建权重图像
    Mat weights1(image1.size(), CV_32FC1, Scalar(0.5));
    Mat weights2(image1.size(), CV_32FC1, Scalar(0.5));

    std::cout<<image1.size()<<" "<<image2.size()<<weights1.size()<<weights2.size()<<std::endl;

    // 创建输出图像

    // 创建输出图像
    Mat blendedImage;

    // 应用线性混合
    blendLinear(image1, image2, weights1, weights2, blendedImage);

    // 显示结果
    namedWindow("Image 1", WINDOW_NORMAL);
    imshow("Image 1", image1);

    namedWindow("Image 2", WINDOW_NORMAL);
    imshow("Image 2", image2);

    namedWindow("Blended Image", WINDOW_NORMAL);
    imshow("Blended Image", blendedImage);

    waitKey(0);

    return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FaceFormer嘴形同步论文复现

一、项目地址 https://github.com/EvelynFan/FaceFormer 二、复现过程 1、项目环境 系统&#xff1a;Ubuntu 18.04.1 python版本&#xff1a;Python 3.7 使用conda创建一个虚拟环境&#xff0c;安装requirements.txt中所需要的库 2、安装ffmpeg 教程网址&#xff1a;http…

kafka 入门

kafka 有分区和副本的概念&#xff0c;partition 3 表示有3个分区&#xff0c;replication 2 表示有2个副本 通过 --describe --topic test命令可以知道 test这个 主题的分区和副本情况&#xff0c;途中的replicas 表示 其他副本分区的情况&#xff0c;如第一条&#xff0c;t…

Docker 安装 Zookeeper + Kafka 保姆级教程

1.创建 docker-compose.yml 创建一个名为 docker-compose.yml 的文件&#xff0c;并添加以下内容&#xff1a; version: 3.6services:zookeeper:image: zookeeper:3.6container_name: zookeeperports:- "2181:2181"networks:- kafka-networkenvironment:ZOO_STANDA…

策略路由与路由策略

1.策略路由与路由策略 1.1 策略路由&#xff08;Policy Routing&#xff09; 1.1.1 定义 策略路由是一种根据特定策略或条件&#xff08;如源地址、目的地址、协议类型、接口、QoS等&#xff09;来决定网络包转发路径的技术&#xff0c;而不是单纯依赖传统的最短路径或最优路…

Linux-kubesphere(K8S)小白单机版搭建部署

目录 一、虚拟机环境设置 二、Kubesphere安装 1、安装工具 1&#xff09;Socat、conntrack、ebtables、ipset 2&#xff09;Docker 2、下载KubeKey 3、开始安装 参考官网&#xff1a;https://www.kubesphere.io/zh/docs/v3.4/quick-start/all-in-one-on-linux/ 一、虚拟机…

无监督3D场景理解,LLM 在 3D 场景理解中的应用与探索 !

构建能够理解和推理3D场景的模型很难&#xff0c;原因在于缺乏3D监督训练的数据来源和大规模训练策略。 在这项工作中&#xff0c;作者问到&#xff1a;在没有3D预训练的情况下&#xff0c;预训练语言模型中的知识如何被利用来理解和推理3D场景&#xff1f; 本工作的目标是确定…

HTML5有格调的个人介绍网站源码

文章目录 1.设计来源1.1 主界面1.2 个人信息界面1.3 项目统计界面1.4 我的相册界面1.5 朋友评价界面1.6 保持联系界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&a…

JAVA后端框架--【Mybatis】

框架 框架就是对技术的封装&#xff0c;将基础的技术进行封装&#xff0c;让程序员快速使用&#xff0c;提高开发效率 java后端框架 mybatis 对jdbc进行封装 背景介绍 mybatis是apache下面的一个开源项目&#xff0c;名为ibatis&#xff0c;2010年开发团队转移到谷歌旗下…

unity3d拼图__附带资源

要达到吸附效果则需要每个拼图上挂载碰撞体 达到整张图片的替换效果需要选中所有拼图部件把材质球拖上去 、 制作材料球 脚本挂载到随便一个空物体上 using System.Collections; using System.Collections.Generic; using UnityEngine;public class PinTu : MonoBehaviour …

Qt编写贪吃蛇小游戏完整项目

文章目录 前言一、Qt环境准备二、编写思路三、编写代码1、开始游戏界面代码1.1、绘制界面1.2、界面基本配置 2、选择难度界面代码3、游戏房间界面制作3.1、界面基础配置3.2、提前配置类中的成员变量3.2.1、QRectF 3.3、检测游戏是否结束的方法3.4、蛇移动的实现3.4.1、蛇向上移…

智慧农业——生成式人工智能如何改变农业

在数字化转型时代&#xff0c;农业不再仅仅与土壤、水和阳光有关。随着生成式人工智能的出现&#xff0c;农业正变得更加智能、高效&#xff0c;并且越来越以数据为主导。从以前所未有的准确度预测作物产量到开发抗病植物品种&#xff0c;生成式人工智能使农民能够做出精确的决…

c语言个人笔记

linux嵌入式C语言 课程链接: [史上最强最细腻的linux嵌入式C语言学习教程李慧芹老师] 0. gcc与vim的使用 gcc 指令 -Wall:显示所有警告 gcc默认的警告包括真正的错误&#xff1a;error和 告警warning 执行过程 c源代码.c -> 预处理(E) -> 编译(S) -> 汇编©.o…

Clickhouse集群化(五)clickhouse语法学习

1. 基础 1.1. 建表建库 CREATE DATABASE IF NOT EXISTS helloworld use default; CREATE TABLE IF NOT EXISTS system_cpu_info (uuid String, -- 主机的唯一标识符source String, -- 数据来源标识resource_pool Strin…

011_IO体系

Java的IO流是实现输入/输出的基础&#xff0c;它可以方便地实现数据的输入/输出操作&#xff0c;在Java中把不同的输入/输出源抽象表述为"流"。 流是一组有顺序的&#xff0c;有起点和终点的字节集合&#xff0c;是对数据传输的总称或抽象。即数据在两设备间的传输称…

代码随想录 刷题记录-18 动态规划(1)基本理论及习题

一、基本理论 什么是动态规划 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分…

码云 云片滑块 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

小乌龟运动控制-3两只小乌龟

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

【自动驾驶】决策规划算法 | 数学基础(一)五次多项式详解

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

Mysql系列—3.体系架构

目录 Mysql体系结构 Connectors&#xff1a; 连接池和线程管理&#xff1a; SQL Interface&#xff1a; Parser&#xff08;查询解析器&#xff09;&#xff1a; Optimizer&#xff08;优化器&#xff09;&#xff1a; Caches&#xff08;缓存&#xff09;&#xff1a; …

Clickhouse集群化(四)使用clickhouse-operator部署clickhouse集群

clickhouse operator实际下就是帮助我们自动化的生产一些clickhouse配置文件信息&#xff0c;在目录/etc/clickhouse-server/的config.d conf.d users.d 1.1. 部署clickhouse operateor 下载clickhouse-operator.yaml文件 wget https://raw.githubusercontent.com/Altinity/…