更多编程教程请到:菜鸟教程 https://www.piaodoo.com/

因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用。可能走了弯路,若有高见请一定提出!

主要代码

import cv2
from PIL import Image
import numpy as np

class UnsupportedFormat(Exception):
def init(self, input_type):
self.t = input_type

def str(self):
return “不支持’{}'模式的转换,请使用为图片地址(path)、PIL.Image(pil)或OpenCV(cv2)模式”.format(self.t)

class MatteMatting():
def init(self, original_graph, mask_graph, input_type=‘path’):
“”"
将输入的图片经过蒙版转化为透明图构造函数
:param original_graph:输入的图片地址、PIL格式、CV2格式
:param mask_graph:蒙版的图片地址、PIL格式、CV2格式
:param input_type:输入的类型,有path:图片地址、pil:pil类型、cv2类型
“”"
if input_type == ‘path’:
self.img1 = cv2.imread(original_graph)
self.img2 = cv2.imread(mask_graph)
elif input_type == ‘pil’:
self.img1 = self.__image_to_opencv(original_graph)
self.img2 = self.__image_to_opencv(mask_graph)
elif input_type == ‘cv2’:
self.img1 = original_graph
self.img2 = mask_graph
else:
raise UnsupportedFormat(input_type)

@staticmethod
def __transparent_back(img):
“”"
:param img: 传入图片地址
:return: 返回替换白色后的透明图
“”"
img = img.convert(‘RGBA’)
L, H = img.size
color_0 = (255, 255, 255, 255) # 要替换的颜色
for h in range(H):
for l in range(L):
dot = (l, h)
color_1 = img.getpixel(dot)
if color_1 == color_0:
color_1 = color_1[:-1] + (0,)
img.putpixel(dot, color_1)
return img

def save_image(self, path, mask_flip=False):
“”"
用于保存透明图
:param path: 保存位置
:param mask_flip: 蒙版翻转,将蒙版的黑白颜色翻转;True翻转;False不使用翻转
“”"
if mask_flip:
img2 = cv2.bitwise_not(self.img2) # 黑白翻转
image = cv2.add(self.img1, img2)
image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) # OpenCV转换成PIL.Image格式
img = self.__transparent_back(image)
img.save(path)

@staticmethod
def __image_to_opencv(image):
“”"
PIL.Image转换成OpenCV格式
“”"
img = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
return img

使用示例

mm = MatteMatting("input.jpg", "mask.jpg")
mm.save_image("output.png", mask_flip=True) # mask_flip是指蒙版翻转,即把白色的变成黑色的,黑色的变成白色的

效果展示

input.jpg

mask.jpg

output.png

到此这篇关于python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图的文章就介绍到这了,更多相关python 输出透明背景图内容请搜索菜鸟教程www.piaodoo.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持菜鸟教程www.piaodoo.com!

python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图相关推荐

  1. python抠透明图_python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图

    因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用.可能走了弯路,若有高见请一定提出! 主要代码 import cv2 from PIL import Im ...

  2. python和pil实现抠图_python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图

    因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用.可能走了弯路,若有高见请一定提出! 主要代码 import cv2 from PIL import Im ...

  3. python 利用百度AI实现文字识别(cv2 + aip module)

    python 利用百度AI实现文字识别(cv2 + aip module) (该案例将利用cv2,aip等模块,详细的安装以及使用的方法将在后文进行简单的介绍.) 一.KNN算法的简介(机器学习算法之 ...

  4. 永恒python图片_python 数据词云展示实例(3)- 背景图设置

    记录wordcloud库背景图的设置及样板 之前介绍了wordcloud的基本使用wordcloud的基本使用,本文记录一下如何设置背景图. 样图 背景图 tim.jpg 生成样图 dream.png ...

  5. Python利用igraph绘制复杂网络聚类(社区检测)结果图

            前言:研究生期间主要做复杂网络聚类,也称为社区检测.临毕业前,老师让之前发表的论文里的算法代码C化,并写出界面进行可视化.由于之前虽然做过可视化,但基本上都是将聚类结果导入到pajek ...

  6. 教你通过python利用近邻法实现图片缩小后变成另一张图(类似幻影坦克)

    近邻法简介 近邻法的一些常见算法包括如下:最近邻法.k-近邻法.近邻法的快速算法.剪辑近邻法.压缩近邻法. 最近邻法 基本思想:对于一个新样本,把它逐一与已知样本进行比较,找出距离新样本最近的已知样本 ...

  7. python之 ffmpeg+opencv绿幕抠图,蒙版绿幕抠图,透明化处理,PIL检测图片是否包含透明通道

    目录 OpenCV-Python实现绿幕图像抠图 python利用蒙版批量抠图并实现透明化 jpeg格式图片进行批量背景透明化处理 PIL检测图片是否包含透明通道 OpenCV-Python实现绿幕图 ...

  8. Python生成透明背景图片

    转载请注明出处:http://blog.csdn.net/jinixin/article/details/79115782 关于画图,Python不乏许多优秀的第三方库能支持操作图片,比如Matplo ...

  9. python转换图片透明背景为白色

    两种方法,思路一致: 方法一: import cv2# 修改透明背景为白色 def transparence2white(img):sp=img.shape # 获取图片维度width=sp[0] # ...

  10. 基于python批量叠加目标图和背景图

    首先写一个将两张图片叠加的函数: import cv2 def pic_superpose(path_img_bg, path_img_ip):img1 = cv2.imread(path_img_b ...

最新文章

  1. Reading Paper
  2. 数组--将两个有序数组a,b合并成新的有序数组c
  3. 80页笔记看遍机器学习基本概念、算法、模型,帮新手少走弯路
  4. springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
  5. 《塞尔达传说:旷野之息》技术分析:神作是怎么炼成的
  6. 密码学系列之:twofish对称密钥分组算法
  7. IE浏览器 对 jquery版本的兼容性 支持
  8. [logstash-input-log4j]插件使用详解
  9. (转)你确定你的交易系统最快?
  10. layer normalization 缺点_优缺点并存的星越,用车感受还是不错的!
  11. 惊!微信可以转发语音了?!
  12. Pico Neo3 4VR游戏下载地址及十大好玩游戏推荐
  13. 屏幕画图工具Pointofix
  14. 体系结构复习2——指令级并行(分支预測和VLIW)
  15. 卫星影像,区划矢量,DEM....教你如何将各种遥感数据收入囊中
  16. 任务管理器显示命令行
  17. 用C语言写一个图书管理系统大作业
  18. arm开发板与windows下的pjsip建立通话
  19. 全球及中国暗箱针孔相机行业竞争格局及十四五投资规划建议报告2021-2027年版
  20. Java解析XML的一些个人总结及感悟。(webService、xml、xsd)

热门文章

  1. 【机器学习】:朴素贝叶斯
  2. 毕马威it咨询 java_【毕马威(KPMG)工资】it咨询师待遇-看准网
  3. ppt如何利用视频作为背景
  4. 资本市场律师David Cameron作为合伙人加入德汇律师事务所香港办事处
  5. 大学计算机应用经典案例,大学计算机基础经典实验案例集
  6. 正点原子stm32F407 lcd.c 增加 画实心圆 函数
  7. html 强制复制粘贴,强制复制粘贴神器一键复制粘贴文本教程
  8. linux系统中怎么复制粘贴快捷键设置,复制粘贴的快捷键是什么 复制粘贴的快捷键介绍【步骤】...
  9. 删除Word模板文件
  10. 基于Qt的学生信息管理系统