欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖

 更新時間:2020年08月04日 08:39:32   作者:小崢嶸  
這篇文章主要介紹了python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

因為最近在做深度學習摳圖,正好要用到蒙版進行摳圖,所以我將摳圖代碼進行了封裝注釋,可以直接使用??赡茏吡藦澛?,若有高見請一定提出!

主要代碼

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 輸出透明背景圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python 解決空列表.append() 輸出為None的問題

    Python 解決空列表.append() 輸出為None的問題

    在本篇文章里小編給大家整理了一篇關于Python 解決空列表.append() 輸出為None的問題的相關內容,有興趣的朋友們可以學習下。
    2021-05-05
  • python進程池Pool中apply方法與apply_async方法的區(qū)別

    python進程池Pool中apply方法與apply_async方法的區(qū)別

    這篇文章主要介紹了python進程池Pool中apply方法與apply_async方法的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pytorch中的squeeze函數、cat函數使用

    pytorch中的squeeze函數、cat函數使用

    這篇文章主要介紹了pytorch中的squeeze函數、cat函數使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python編程使用tkinter模塊實現計算器軟件完整代碼示例

    Python編程使用tkinter模塊實現計算器軟件完整代碼示例

    這篇文章主要介紹了Python編程實現一個計算器軟件完整代碼示例,簡單介紹了Tkinter的相關內容,然后分享了通過tkinter模塊開發(fā)一個計算器的完整Python代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • Python中else的三種使用場景

    Python中else的三種使用場景

    在Python中else最常見的用法就是用在判斷語句中,其實還可以用在循環(huán)語句和異常處理中。 下面來總結一下else的用法:
    2021-06-06
  • Python幫你解決手機qq微信內存占用太多問題

    Python幫你解決手機qq微信內存占用太多問題

    你有沒有發(fā)現以前16G內存也可以裝幾個游戲玩,現在128G的卻日常使用都不夠了?更不用說裝什么游戲,這其實是軟件內存占用過多導致的,今天我們用python來清理下
    2022-02-02
  • python3解析庫BeautifulSoup4的安裝配置與基本用法

    python3解析庫BeautifulSoup4的安裝配置與基本用法

    簡單來說,BeautifulSoup就是Python的一個HTML或XML的解析庫,我們可以用它來方便地從網頁中提取數據,下面這篇文章主要給大家介紹了關于python3解析庫BeautifulSoup4的安裝配置與基本用法的相關資料,需要的朋友可以參考下
    2018-06-06
  • 深入講解Java編程中類的生命周期

    深入講解Java編程中類的生命周期

    這篇文章主要介紹了深入講解Java編程中類的生命周期,在帶有垃圾回收功能的Java虛擬機上運行的程序中類的生命周期就顯得格外重要,需要的朋友可以參考下
    2016-02-02
  • python繪制雪景圖

    python繪制雪景圖

    這篇文章主要為大家詳細介紹了python繪制雪景圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Django實現分頁顯示效果

    Django實現分頁顯示效果

    這篇文章主要為大家詳細介紹了Django實現分頁顯示效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評論