详解在Python中把一个图像叠加在另一个图像上

yizhihongxing

在Python中把一个图像叠加在另一个图像上的过程中,可以用OpenCV库来实现。具体步骤如下:

1.读取原图和覆盖图

import cv2

# 读取原图和覆盖图
img1 = cv2.imread("image1.png")
img2 = cv2.imread("image2.png")

2.确定图像叠加的位置

# 确定图像叠加的位置
rows, cols, channels = img2.shape
roi = img1[0:rows, 0:cols]

这里img2的大小要小于img1,才能在img1的特定区域上叠加。rows, cols, channels = img2.shape得到img2的行、列和通道数,然后利用这些值,从img1中选取与img2大小相同的区域作为覆盖区域roi

3.制作蒙版

# 制作蒙版
img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

在将图像叠加时,需要将覆盖区域进行蒙版处理。这里通过将img2转换为灰度图,然后利用阈值将非黑色部分变成白色(255),制作一个蒙版mask。用bitwise_notmask中的白色和黑色进行反转,获得mask_inv

4.图像叠加操作

# 图像叠加操作
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
img2_fg = cv2.bitwise_and(img2, img2, mask=mask)
dst = cv2.add(img1_bg, img2_fg)
img1[0:rows, 0:cols] = dst

在进行图像叠加操作时,分别对roiimg2进行若干次的位运算,最后将它们加在一起得到叠加图像dst。然后将dst放回到原图中的roi位置,就完成了图像叠加的操作。

下面给出一个完整的代码示例:对于两幅图片A和B,将B的左上角位置放在A的中央位置,并将B图切出来的长宽分别缩小一半后叠加在A图中。

import cv2

# 读取A和B图片
img_A = cv2.imread("image_A.png")
img_B = cv2.imread("image_B.png")

# 获取B图片的大小信息
rows, cols, channels = img_B.shape

# 计算出将B图显示在A图中央的坐标点
center_x = img_A.shape[1] // 2 - cols // 4
center_y = img_A.shape[0] // 2 - rows // 4

# 抠出B图需要覆盖的区域
roi = img_A[center_y:center_y + rows // 2, center_x:center_x + cols // 2]

# 制作蒙版mask和mask_inv
img_B_gray = cv2.cvtColor(img_B, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img_B_gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

# 图像叠加
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
img2_fg = cv2.bitwise_and(img_B, img_B, mask=mask)
dst = cv2.add(img1_bg, img2_fg)

# 将叠加后的图像放回到A图
img_A[center_y:center_y + rows // 2, center_x:center_x + cols // 2] = dst

# 显示图片
cv2.imshow("result", img_A)
cv2.waitKey(0)
cv2.destroyAllWindows()

另一种示例,将两张图片按照一定的权值混合在一起。

import cv2

# 读取两张图片
img1 = cv2.imread("image1.png")
img2 = cv2.imread("image2.png")

# 设定混合比例
alpha = 0.7
beta = 1 - alpha

# 图像混合
result = cv2.addWeighted(img1, alpha, img2, beta, 0)

# 显示图片
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上面的示例中,利用cv2.addWeighted()函数对两张图片进行按权重混合,最后得到一个新的混合后的图像result,其中alpha表示第一张图片的权重,beta表示第二张图片的权重,0表示亮度权重。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解在Python中把一个图像叠加在另一个图像上 - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • kafka-python:使用 SASL_SSL + SCRAM-SHA-512 时在接收期间重置连接

    【问题标题】:kafka-python: Connection reset during recv when using SASL_SSL + SCRAM-SHA-512kafka-python:使用 SASL_SSL + SCRAM-SHA-512 时在接收期间重置连接 【发布时间】:2023-04-07 18:04:01 【问题描述】: 我正在使用 ka…

    Python开发 2023年4月8日
    00
  • Python实现简单的语音识别系统

    Python实现简单的语音识别系统——完整攻略 1. 简介 随着人工智能的发展,语音识别系统的应用越来越广泛。为此,本文将介绍如何用Python实现简单的语音识别系统。 在本文中,我们将使用以下库来实现我们的语音识别系统: pyaudio:录制音频 speech_recognition:转换音频文本 pyttsx3:将文本转换为语音输出 2. 安装 首先,我…

    python 2023年5月19日
    00
  • Python利用多线程枚举实现获取wifi信息

    Python多线程枚举实现获取wifi信息攻略 1. 前置知识 在阅读本攻略之前,需要掌握以下知识: Python基础语法 网络编程基础:网络通信协议、socket编程 多线程编程基础:线程、锁、条件变量等 Linux基础命令行操作 2. 攻略实现步骤 本攻略实现步骤如下: 获取wifi网络接口名 执行iwlist命令获取接口附近无线网络信息 解析iwlis…

    python 2023年5月19日
    00
  • python基础之函数的定义和调用

    当然,我很乐意为您提供“Python基础之函数的定义和调用”的完整攻略。以下是详细步骤和示例。 函数的定义和调用 在Python,函数是段可重用的代码块,用于执行特定的任务。函数可以接受参数,并可以返回值。函数的定义和调用是Python编程中的基本概念之一。 函数定义 在Python中可以使用def关键字来定义函数。函数定义的基本语法如下: def func…

    python 2023年5月13日
    00
  • Python爬虫获取页面所有URL链接过程详解

    下面就来详细讲解“Python爬虫获取页面所有URL链接过程详解”。 简介 在网络爬虫中,获取页面上所有的URL链接是一个非常常见的任务,它是爬虫获取网站信息的基础。本攻略将介绍如何使用Python爬虫获取页面上的所有URL链接。 实现步骤 获取页面上所有URL链接的过程可以分为以下几个步骤: 发送HTTP请求:使用Python的requests库向需要爬取…

    python 2023年5月14日
    00
  • python基于三阶贝塞尔曲线的数据平滑算法

    Python基于三阶贝塞尔曲线的数据平滑算法 数据平滑是一种常见的数据处理技术,可以用于去除数据中的噪声和异常值,使数据更加平滑和可靠。在Python中,可以使用三阶贝塞尔曲线实现数据平滑算法。本文将详细讲解实现基于三阶贝塞尔曲线的数据平滑算法的整个攻略,包括算法原理、实现过程和示例。 算法原理 三阶贝塞尔曲线是一种常见的曲线拟合方法,可以用于平滑数据。在三…

    python 2023年5月14日
    00
  • Jupyter notebook如何实现打开数据集

    Jupyter notebook是一种常见的数据科学工具,它可以方便地打开、分析和可视化数据集。以下是Jupyter notebook如何实现打开数据集的完整攻略: 步骤一:导入必要的Python库 在Jupyter notebook中打开一个新的notebook文件,在第一个cell中,我们需要导入必要的Python库,例如: import pandas …

    python 2023年6月3日
    00
  • python中pip的安装与使用教程

    下面是 Python 中 pip 的安装与使用教程的完整攻略。 安装 pip 首先确认你已经安装了 Python。在命令行输入以下命令查看 Python 版本: python –version 如果显示版本号,则说明你已经安装了 Python。如果没有,则需要先安装 Python。 下载 pip 安装脚本。可以在官方网站下载(https://bootstr…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部