【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.rhkb.cn/news/340442.html

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

相关文章

零基础python爬虫从入门到精通

零基础python爬虫从入门到精通 课程介绍学习地址下期更新预报 课程介绍 本套视频教程适合想掌握爬虫技术的学习者,以企业主流版本Python 3.7来讲解,内容包括:Python基础、Urllib、解析(xpath、jsonpath、beautiful)、…

初级网络工程师之入门到入狱(一)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、交换机二、路由器三、DHCP(动态主机配置协议)四、路由器配置 DHCP自…

java多线程初探

文章目录 countDownLatchvolatileCASjdk1.6对synchronized的优化自旋锁锁消除锁粗化轻量级锁偏向锁 java AtomicBoolean compareAndSet Demothreadlocalconcurrent queue原子操作是否需要同步copyonwrite容器可重入锁公平与非公平并发编程步骤 countDownLatch 此类位于java.ut…

bootstrapblazor小白笔记

使用了bootstrapblazor,采用.net8.0,server模式,所有的问题都是基于以上条件所遇到的 1、登录过后需要在每个页面都使用认证吗 是不需要的,每个页面都写attribute [Authorize]没有问题,但是页面很多的话一个一个的写很…

QT 音乐播放器【一】 显示音频级别指示器

文章目录 效果图概述代码总结 效果图 概述 QMediaPlayer就不介绍了,就提供了一个用于播放音频和视频的媒体播放器 QAudioProbe 它提供了一个探针,用于监控音频流。当音频流被捕获或播放时,QAudioProbe 可以接收到音频数据。这个类在需要访问…

1371. 每个元音包含偶数次的最长子字符串

1371. 每个元音包含偶数次的最长子字符串 原题链接:完成情况:解题思路:参考代码:_1371每个元音包含偶数次的最长子字符串 错误经验吸取 原题链接: 1371. 每个元音包含偶数次的最长子字符串 https://leetcode.cn/pro…

项目管理工具Maven基础

文章目录 1 Maven概述2 Maven项目基础2.1 项目坐标2.2 项目结构2.3 pom配置文件 3 Maven依赖管理3.1 依赖配置3.2 依赖范围3.3 依赖传递和排除 4 Maven生命周期5 参考资料 1 Maven概述 Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具&#x…

404错误页面源码,简单实用的html错误页面模板

源码描述 小编精心准备一款404错误页面源码,简单实用的html错误页面模板,简单大气的页面布局,可以使用到不同的网站中,相信大家一定会喜欢的 效果预览 源码下载 https://www.qqmu.com/3375.html

蓝桥杯嵌入式国赛笔记(3):其他拓展板程序设计(温、湿度传感器、光敏电阻等)

目录 1、DS18B20读取 2、DHT11 2.1 宏定义 2.2 延时 2.3 设置引脚输出 2.4 设置引脚输入 2.5 复位 2.6 检测函数 2.7 读取DHT11一个位 2.7.1 数据位为0的电平信号显示 2.7.2 数据位为1的电平信号显示 2.8 读取DHT11一个字节 2.9 DHT11初始化 2.10 读取D…

配置本地 apt 源

挂载iso镜像文件 注意:文章中的挂载方法是临时挂载,重启服务器失效 我是使用iBMC的虚拟控制台将我的iso文件以设备的形式挂载到服务器上,我的iso文件是设备:/dev/sr0 也可以直接将iso文件上传到服务器某个目录。 将 /dev/sr0 进…

【竞技宝】欧洲杯:德国被乌克兰逼平,27脚射门仍难得分!

欧洲杯前的热身赛已经全面开启,东道主德国队算是打响了热身赛的第一枪,只可惜他们在主场0比0被乌克兰逼平。整场比赛,德国队都占据明显优势,全场比赛轰出27脚射门,可是却无法实现破门。这个时候德国球迷似乎回想到了前两届世界大赛,球队被“锋无力”支配的恐惧。 本场比赛德国队…

拓扑排序详解

目录 一、拓扑排序前置知识 1.1 定义: 1.2 AOV网: 二、如何拓扑排序 2.1 运用 kahn 算法: 2.2 实现拓扑排序: 2.3 拓扑排序的应用: 2.4 拓扑排序编写模板: 三、例题练习 3.1 例题1:课…

虚拟机安装 RockyLinux为例

目录 一、VMWare、Xshell、Xftp、LinuxISO资料下载 二、VMWare安装 三、创建虚拟机 四、虚拟机安装过程的问题 一、VMWare、Xshell、Xftp、LinuxISO资料下载 链接:百度网盘 请输入提取码 提取码:6666 二、VMWare安装 三、创建虚拟机 四、虚拟机安装…

工具类产品一定适合走简洁路线,不接受反驳。

工具类产品通常适合走简洁路线。这是因为工具类产品的主要目标是解决用户的问题或提供某种功能,因此用户更关注产品的实用性和易用性,而不是过多的装饰和复杂的功能。 以下是为什么工具类产品适合走简洁路线的一些原因: 用户体验&#xff1…

【iOS】didReceiveMemoryWarning实例方法

iPhone下每个App可用的内存是被限制的,如果一个App使用的内存超过20M,则系统会向该App发送Memory Warning(内存警告)消息,收到此消息后,App必须正确处理,否则可能出错或出现内存泄漏。 目录 流程…

回归现实:无需复杂假设即可轻松评估过程能力的简单方法

Cpk 和 Ppk 等过程能力指标能够测量您的过程相对于客户规格要求的执行情况。我们先回顾一些能力分析基础知识,再深入了解另一个能力估计值 Cnpk,该估计值很可能在您的能力分析库中非常有用。 能力统计指标分析 能力统计指标使用单个数字,是一…

Linux命令 netstat -anp | grep 的用法

文章目录 1、第一种解释2、第二种解释3、第三种解释4、第四种解释5、第五种解释6、netstat --help 在Windows中,杀死端口占用的博客链接 1、第一种解释 在Unix和Linux系统中,netstat -anp 命令用于显示所有的网络连接( -a 表示所有&#xff…

OpenCv之简单的人脸识别项目(登录页面)

人脸识别 一、项目准备二、登录页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.运行脚本3.1定义识别脚本3.2定义提取脚本3.3定义标注脚本3.4定义人脸比对脚本3.5定义动态处理脚本3.6定义属性判断脚本 4.创建一个退出…

浏览器阻止屏幕息屏,js阻止浏览器息屏,Web网页阻止息屏

场景: 比如打开一个浏览器页面(比如大屏),想让它一直显示着,而不是过几分钟不操作就屏幕黑了.(电脑有设置电脑不操作就会多长时间就会息屏睡眠,如果要求每个客户都去操作一下电脑设置一下从不睡眠,这很不友好和现实.而且我也只想客户在大屏的时候才这样,其他页面就正常,按电脑设…

如何从 Android 中恢复误删除的照片

尝试恢复 Android 智能手机上误删的文件、照片和视频可能非常麻烦,但无论如何,这是可以做到的。根据您用于删除照片的应用程序,方法可能因设备而异。但是,如果删除时间不长,您可能能够恢复它。在本文中,我们…