首页 > 编程语言 >python利用蒙版进行抠图,背景透明和前景透明

python利用蒙版进行抠图,背景透明和前景透明

时间:2024-06-14 10:11:30浏览次数:20  
标签:透明 foreground python cv2 image mask 蒙版 background alpha

深度学习中利用黑白蒙版进行抠图

import cv2
import numpy as np


def get_alpha(image, mask):

    # 归一化
    mask = mask/255
    back_mask = mask
    # 将透明度A值转成一样维度
    back_transparent = back_mask.reshape(back_mask.shape[0], back_mask.shape[1], 1)
    # 将前景透明
    fore_mask = 1-mask
    fore_transparent = fore_mask.reshape(fore_mask.shape[0], fore_mask.shape[1], 1)

    # 蒙上做计算
    foreground_alpha = image * np.expand_dims(back_mask, axis=2).repeat(3, 2) / 255
    background_alpha = image * np.expand_dims(fore_mask, axis=2).repeat(3, 2) / 255

    # 加上透明度
    foreground_alpha = np.c_[foreground_alpha, back_transparent]
    background_alpha = np.c_[background_alpha, fore_transparent]

    # print(foreground_alpha.shape)
    # 乘回原来的颜色
    foreground_alpha = (foreground_alpha * 255).astype(np.uint8)
    background_alpha = (background_alpha * 255).astype(np.uint8)

    return foreground_alpha, background_alpha


if __name__ == '__main__':

    input_path = r'C:\Users\Administrator.DESKTOP-161KJQD\Desktop\pyy.jpeg'
    mask_path = r'C:\Users\Administrator.DESKTOP-161KJQD\Desktop\pyy_mask.png'

    input_image = cv2.imread(input_path)
    mask_image = cv2.imread(mask_path)
    mask_image = cv2.cvtColor(mask_image, cv2.COLOR_BGR2GRAY)

    foreground_alpha, background_alpha = get_alpha(input_image, mask_image)

    cv2.imshow('foreground_alpha', foreground_alpha)
    cv2.imshow('background_alpha', background_alpha)

    cv2.imwrite(r'C:\Users\Administrator.DESKTOP-161KJQD\Desktop\foreground_alpha.png', foreground_alpha)

    cv2.imwrite(r'C:\Users\Administrator.DESKTOP-161KJQD\Desktop\background_alpha.png', background_alpha)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

原图

 

蒙版

 

得到前景和背景

 

标签:透明,foreground,python,cv2,image,mask,蒙版,background,alpha
From: https://www.cnblogs.com/moon3496694/p/18247254

相关文章

  • python爬虫:实现动态网页的爬取,以爬取视频为例
    引言:爬虫也被称为网络蜘蛛(Spider),是一种自动化的软件程序,能够在互联网上漫游,按照一定的规则和算法抓取数据。爬虫技术广泛应用于搜索引擎、数据挖掘、信息提取等领域,是互联网技术的重要组成部分。摘要:作为爬虫的初学者,网页越简单越好,因为网页的结构越简单,则组织框架更清晰......
  • 基于Python3.11及SQL Server实现股票组合价值曲线相关计算分析
       本文中Python的版本使用的是3.11,数据库使用的是SQLSERVER2008,项目运行效果图如下:蒙特卡洛相关:突出风险最小点:夏普比率相关夏普比率无风险最大点文章中的股票每日交易数据摘取自:英为财情 https://cn.investing.com/蒙特卡洛及夏普相关计算参考【胖哥真......
  • Python脚本中使用 if 语句导致的错误代码
    在Python脚本中使用if语句是一种常见的控制流程结构,用于根据条件决定程序的执行路径。当使用Python中的if语句时,可能会导致一些常见的错误。下面就是我经常遇到的错误代码示例及其可能的原因和解决方法,希望对大家有些帮助,少走弯路。1、问题背景一位用户在编写一......
  • python通知 设置系统托盘图标
    pythonQSystemTrayIcon.setIconQSystemTrayIcon.setIcon 是一个用于设置系统托盘图标的方法,它是PyQt5或PySide中的Qt库的一部分。这个方法让你可以设置系统托盘图标,它可以接受一个 QIcon 对象作为参数。以下是一些使用 QSystemTrayIcon.setIcon 的方法:直......
  • Python笔记 - 正则表达式
    正则表达式(RegularExpression,简称regex)是一种强大的工具,用于匹配字符串模式。在Python中,正则表达式通过re模块提供。本文将带你深入了解Python中的正则表达式,从基础概念到高级用法。1.什么是正则表达式?正则表达式是一种用来描述字符串模式的方法。它可以用来匹配、查找......
  • 【python】用panda3d实现简易版《Minecraft》
    1.下載panda3d等等     panda3d是python的一个第三方库,在Windows的cmd下输入即可下載:pipinstallpanda3d     另外还用了 PIL,Pmw,ttkbootstrap這些第三方库,下載方式同上。。。2.方块模型     对于建模小白来说,blender有亿点难!! (资源放......
  • 哪些方法可以让 Python 代码易维护
    随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准)。然而,在代码库中保持一致的代码风格和测试标准能够显著减轻维护的压力,也能确保新的开发者能够快速了解项目的情况,同时能更好地全程保持应用程序的质量。使用外部库来检查代......
  • 基于python-CNN深度学习的手势识别数字-含数据集+pyqt界面
    代码下载:https://download.csdn.net/download/qq_34904125/89379220本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-pyto......
  • 基于python_cnn深度学习的decks的裂缝识别-含数据集+pyqt界面
    代码下载:https://download.csdn.net/download/qq_34904125/89379212本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-pyto......
  • 【Python】成功解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in p
    【Python】成功解决UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0x80inposition45:illegalmultibytesequence 下滑即可查看博客内容......