【深度学习入门案例】三十行代码实现抠图及图片合成

简介: 【深度学习入门案例】三十行代码实现抠图及图片合成

文章目录

一义待抠图 图片

二载预训练模型

三.片合成

四.完整源码

一义待抠图 图片

图片和py文件统计目录:

1.png代码为:

#待预测图片
test_img_path = ["./test.jpg"]
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread(test_img_path[0])
# 展示待预测图片
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()

返回:

1.png

二载预训练模型

通过加载PaddleHub DeepLabv3+模型(deeplabv3p_xception65_humanseg)实现一键抠图

import paddlehub as hub
module = hub.Module(name="humanseg_lite")
res = module.segment(
    paths = ["./test.jpg"],
    visualization=True,
    output_dir='humanseg_lite')
# 预测结果展示
test_img_path = "./humanseg_lite/test.png"
img = mpimg.imread(test_img_path)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()

返回:

1.png

三.片合成

将抠出的人物图片合成在想要的背景图片当中

#图像合成
from PIL import Image
import numpy as np
def blend_images(fore_image, base_image):
    """
    将抠出的人物图像换背景
    fore_image: 前景图片,抠出的人物图片
    base_image: 背景图片
    """
    # 读入图片
    base_image = Image.open(base_image).convert('RGB')
    fore_image = Image.open(fore_image).resize(base_image.size)
    # 图片加权合成
    scope_map = np.array(fore_image)[:, :, -1] / 255
    scope_map = scope_map[:, :, np.newaxis]
    scope_map = np.repeat(scope_map, repeats=3, axis=2)
    res_image = np.multiply(scope_map, np.array(fore_image)[:, :, :3]) + np.multiply((1 - scope_map),
                                                                                     np.array(base_image))
    # 保存图片
    res_image = Image.fromarray(np.uint8(res_image))
    res_image.save("blend_res_img.jpg")
blend_images('./test.jpg', 'img.png')
# 展示合成图片
plt.figure(figsize=(10,10))
img = mpimg.imread("./blend_res_img.jpg")
plt.imshow(img)
plt.axis('off')
plt.show()

返回:

image.png

如此便是成功了,yeah!

四.完整源码

相关文件创建和图片可以创建和找,需要我得文件可以主页左侧栏联系我。

# coding=gbk
"""
作者:川川
@时间  : 2021/8/29 5:48
群:970353786
"""
#待预测图片
test_img_path = ["./test.jpg"]
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread(test_img_path[0])
# 展示待预测图片
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
#加载模型
import paddlehub as hub
module = hub.Module(name="humanseg_lite")
res = module.segment(
    paths = ["./test.jpg"],
    visualization=True,
    output_dir='humanseg_lite')
# 预测结果展示
test_img_path = "./humanseg_lite/test.png"
img = mpimg.imread(test_img_path)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
#图像合成
# from PIL import Image
# import numpy as np
#
#
# def blend_images(fore_image, base_image):
#     """
#     将抠出的人物图像换背景
#     fore_image: 前景图片,抠出的人物图片
#     base_image: 背景图片
#     """
#     # 读入图片
#     base_image = Image.open(base_image).convert('RGB')
#     fore_image = Image.open(fore_image).resize(base_image.size)
#
#     # 图片加权合成
#     scope_map = np.array(fore_image)[:, :, -1] / 255
#     scope_map = scope_map[:, :, np.newaxis]
#     scope_map = np.repeat(scope_map, repeats=3, axis=2)
#     res_image = np.multiply(scope_map, np.array(fore_image)[:, :, :3]) + np.multiply((1 - scope_map),
#                                                                                      np.array(base_image))
#
#     # 保存图片
#     res_image = Image.fromarray(np.uint8(res_image))
#     res_image.save("blend_res_img.jpg")
# blend_images('./humanseg_lite/test.png', 'img.png')
#
# # 展示合成图片
plt.figure(figsize=(10,10))
img = mpimg.imread("./blend_res_img.jpg")
plt.imshow(img)
plt.axis('off')
plt.show()
相关文章
|
28天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
11天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
36 3
|
26天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
2月前
|
机器学习/深度学习 自然语言处理 TensorFlow
课外阅读之深度学习如何入门?
课外阅读之深度学习如何入门?
32 0
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深度学习如何入门?
深度学习入门的指南,包括准备基础知识、学习深度学习理论、实践操作、进阶学习、参与社区和不断实践与反思等步骤。
57 0
|
2月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP自然语言处理】基于PyTorch深度学习框架构建RNN经典案例:构建人名分类器
【NLP自然语言处理】基于PyTorch深度学习框架构建RNN经典案例:构建人名分类器
|
2月前
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
2月前
|
机器学习/深度学习 PyTorch API
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)