【python】OpenCV—Merge Image

在这里插入图片描述

文章目录

  • np.hstack / np.vstack
  • Slice
  • cv2.addWeighted
  • 自定义渐变式叠加
  • cv2.bitwise_not / cv2.bitwise_and / cv2.add

np.hstack / np.vstack

利用 numpy 的 hstack 和 vstack,对图片进行拼接

import cv2
import numpy as nph, w = 256,256
img1 = cv2.resize(cv2.imread("1.jpg"), (w, h))
img2 = cv2.resize(cv2.imread("2.png"), (w, h))horizontal = np.hstack((img1, img2))
cv2.imwrite("horizontal.jpg", horizontal)vertical = np.vstack((img1, img2))
cv2.imwrite("vertical.jpg", vertical)

输入图片
在这里插入图片描述
在这里插入图片描述

horizontal

在这里插入图片描述

vertical

在这里插入图片描述

Slice

学习来自 Python 图像合并:利用 OpenCV 的强大功能

图片 reszie 成同样大小,生成空白图,利用切片,给相应区域赋值

import cv2
import numpy as npdimension = 256
canvas_dimension = 2 * dimensionimg1 = cv2.resize(cv2.imread("1.png"), (dimension, dimension))
img2 = cv2.resize(cv2.imread("2.png"), (dimension, dimension))
img3 = cv2.resize(cv2.imread("3.png"), (dimension, dimension))
img4 = cv2.resize(cv2.imread("4.png"), (dimension, dimension))canvas = np.zeros((canvas_dimension, canvas_dimension, 3), dtype=np.uint8)canvas[0:dimension, 0:dimension] = img1
canvas[0:dimension, dimension:canvas_dimension] = img2
canvas[dimension:canvas_dimension, 0:dimension] = img3
canvas[dimension:canvas_dimension, dimension:canvas_dimension] = img4# cv2.imwrite("merge.jpg", canvas)
cv2.imshow("merge", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入图片1
在这里插入图片描述

输入图片2
在这里插入图片描述

输入图片3
在这里插入图片描述

输入图片4
在这里插入图片描述

合并结果
在这里插入图片描述

cv2.addWeighted

import cv2
w, h = 960, 540
img1 = cv2.resize(cv2.imread("1.jpg"), (w, h))
img2 = cv2.resize(cv2.imread("2.jpg"), (w, h))
merge = cv2.addWeighted(img1, 0.7, img2, 0.3, gamma=.0)
cv2.imwrite("merge.jpg", merge)

输入1

在这里插入图片描述

输入2

在这里插入图片描述

输出

在这里插入图片描述

自定义渐变式叠加

Python国庆头像制作

渐变透明度叠加

原图

在这里插入图片描述

在这里插入图片描述

from PIL import Imageflag = Image.open('1.png').convert("RGBA")
avatar = Image.open('2.jpg').convert("RGBA")flag = flag.resize(avatar.size)for i in range(flag.size[0]):for j in range(flag.size[1]):r, g, b, _ = flag.getpixel((i, j))alpha = max(0, 255 - i // 5 - j // 7) # 核心代码,左上角到右下角越来越透明# 重新填充像素flag.putpixel((i, j), (r, g, b, alpha))avatar.paste(flag, (0, 0), flag)
avatar.save('flag_avatar.png')

叠加后的效果

在这里插入图片描述

cv2.bitwise_not / cv2.bitwise_and / cv2.add

可以参考 【python】OpenCV—Paste Mask

A 图

请添加图片描述

A 图的 mask 标签

请添加图片描述
B 图

请添加图片描述
合并的结果
在这里插入图片描述

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

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

相关文章

ssm055基于spring框架的中小企业人力资源管理系统的设计及实现+jsp-手把手调试搭建

ssm055基于spring框架的中小企业人力资源管理系统的设计及实现jsp-手把手调试搭建 ssm055基于spring框架的中小企业人力资源管理系统的设计及实现jsp-手把手调试搭建

Pico4 MR Unity零基础开发之开启MR透视

一、新建场景:SeethroughScene 1、新建场景。 二、添加 XR 摄像机进行设置 1、在 Hierarchy 窗口中,右击默认添加的 Main Camera,然后点击 Delete 将其删除。 2、点击 > XR > XR Origin (VR),将 XR Origin 添加至场景 3、…

[leetcode hot 150]第七十题,爬楼梯(动态规划)

题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 爬到第 n 阶楼梯的方法数量等于爬到第 n-1 阶和第 n-2 阶的方法数量之和,即: f(n) f(n-1) f(n-2) 边界条件 还需要考虑边界…

【调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输】

调试笔记-系列文章目录 调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输 文章目录 调试笔记-系列文章目录调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输 前言一、调试环境操作系统:O…

Ubuntu 22.04安装cuda及Pytorch教程

文章目录 1、安装显卡驱动2、安装CUDA3、安装cuDNN4、安装pyTorch5、卸载CUDA参考资料 在PyTorch中使用CUDA,需要确保安装的PyTorch版本与你的CUDA版本兼容, 且正确安装了匹配GPU的CUDA Toolkit。以下是在PyTorch中使用CUDA的一般步骤: 检查C…

Padstack制作贴片和通孔焊盘

Padstack制作贴片和通孔焊盘 一、贴片焊盘制作 先选择SMD Pin,下面的pad geometry根据需求选择,一般是Circle和Rectangle,然后选择单位,mm制。 然后点击Design Layers,只需要修改Regular Pad常规焊盘就行&#xff0c…

七天进阶elasticsearch[two]

批量保存 批量保存是通过_bulk API来实现的 请求方式 post 请求地址 _bulk 通过_bulk操作文档,一般至少有两行参数 第一行用于确定要干什么(插入,修改还是删除) 第二行才是操作的数据; 当然以上是标准操作,也可以不遵循标准操作,使用不同的请求方式来完成 批量保存demo…

浅谈申请小程序地理位置权限的正确打开方式

小程序地理位置接口有什么功能? 这篇内容会教大家如何快速申请“获取当前的地理位置(onLocationChange)”接口,以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验,来之不易,望大家…

【Python】让我们来生成二维码吧

准备操作 安装qrcode包:pip install qrcode[pil] 安装Pillow包:pip install Pillow 代码 import qrcode import hashlibdef generate_filename(url):data_bytes url.encode("utf-8")file_name hashlib.sha256(data_bytes).hexdigest()re…

加密货币初创企业指南:如何寻找代币与市场的契合点

撰文:Mark Beylin,Boost VC 编译:Yangz,Techub News 原文来源:香港Web3媒体Techub News 在 Y Combinator 创始人 Paul Graham 《Be Good》一文中概述了初创企业如何找到产品与市场契合点的方法,即制造人…

图卷积网络原理及实践

图神经网络 (GNN) 是深度学习领域最吸引人且发展最快的架构之一。作为旨在处理图结构数据的深度学习模型,GNN 具有非凡的多功能性和强大的学习能力。 在各种类型的 GNN 中,图卷积网络 (GCN) 已成为最流行且应用最广泛的模型。GCN 具有创新性&#xff0c…

现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果

现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果吗? 最终展示结果要求为: 品类产品生产时间开始生产时间…

Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

文章目录 Android开机动画压缩包zip,自制开机动画1.Android加载压缩包原理2.自制开机动画 Android开机动画压缩包zip,自制开机动画 1.Android加载压缩包原理 这里有个md文件我们看下 核心部分, 首先要创建一个文件叫做desc.txt,这是规定的…

SystemUI中添加系统新图标

文章目录 描述实现步骤framework中修改SystemUI中修改 描述 在系统状态栏的右侧添加一个自定义图标 实现步骤 framework中修改 1.定义右侧系统图标的插槽 frameworks/base/core/res/res/values/config.xml文件中内容修改如下所示,定义的图标为status_bar_custom…

【AI】你要的U-KAN来了

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 U-KAN来了,快是真的快的,上个月才出的KAN,不得不说快。 先占个坑,有时间细看。 下面放上摘要 1. 正文 …

使用Python的xml.etree.ElementTree模块解析XML文件

使用Python的xml.etree.ElementTree模块解析XML文件 在Python中,处理XML文件是一项常见的任务。XML(可扩展标记语言)是一种用于编码文档的标记语言,它提供了一种结构化的方式来描述和传输数据。对于处理XML文件,Python标准库提供了xml.etree.ElementTree(通常简称为ET)模…

Linux中的`paste`命令:合并文件的简单艺术

Linux中的paste命令:合并文件的简单艺术 在Linux的世界中,文本处理是一项常见的任务。有时,我们可能需要将两个或多个文件的内容合并在一起,以创建新的输出。这就是paste命令的用武之地。paste命令允许你按行合并文件的内容&…

网络编程介绍(IP)(一)

定义:可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。 java.net.*包下提供了网络编程的解决方案。 基本的通信架构: CS架构( Client客户端/Server服务端 ): Clie…

Django 外键关联数据

在设计数据库的时候,是得需要通过外键的形式将各个表进行连接。 原先的表是这样的 要想更改成这样: 下面是操作步骤: 有两张表是关联的 # 在 models.py 里创建class Department(models.Model):"""部门表""&quo…

基于Arduino的简易磁悬浮装置原理图和源代码分享

磁悬浮装置原理 大家可能都玩过这种磁悬浮玩具,它们的工作原理与此类似。 首先,让我们了解一下这个原理,其实非常简单。它主要依赖于磁力对悬浮物体的控制。基本原理如下:在浮子的正下方放置一个霍尔传感器。当传感器检测到浮子向…