python按钮虚化,深度学习与图像处理实例:人像背景虚化与背景替换
简单人像背景虚化处理思路如下:
对图像内容分割,提取人像,背景
背景模糊处理
人像与模糊处理后的背景融合
本实例使用DeepLabV3图像分割深度学习模型实现。代码如下:
import numpy as np
import tensorflow as tf
import cv2
from deeplabmodel import *
def create_pascal_label_colormap():
colormap = np.zeros((256, 3), dtype=int)
ind = np.arange(256, dtype=int)
for shift in reversed(range(8)):
for channel in range(3):
colormap[:, channel] |= ((ind >> channel) & 1) << shift
ind >>= 3
return colormap
def label_to_color_image(label):
if label.ndim != 2:
raise ValueError('Expect 2-D input label')
colormap = create_pascal_label_colormap()
if np.max(label) >= len(colormap):
raise ValueError('label value too large.')
return colormap[label]
def load_model():
model_path = '../resources/models/tensorflow/deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz'#'deeplab_model.tar.gz'
MODEL = DeepLabModel(model_path)
print('model loaded successfully!')
return MODEL
model = load_model()
src = cv2.imread('../resources/images/person2.jpg')
# 背景图像
src_view = cv2.imread('../resources/images/view.jpg')
resized_im, seg_map = model.run2(src)
resized_view = cv2.resize(src_view,(resized_im.shape[1],resized_im.shape[0]))
resized_view = cv2.medianBlur(resized_view,11)
seg_image = label_to_color_image(seg_map).astype(np.uint8)
print(seg_map.dtype)
# seg_map = cv2.GaussianBlur(np.uint8(seg_map),(11,11),0)
src_resized = cv2.resize(src,(resized_im.shape[1],resized_im.shape[0]))
# seg_image = cv2.GaussianBlur(seg_image,(11,11),0)
bg_img = np.zeros_like(src_resized)
# 复制背景
bg_img[seg_map == 0] = src_resized[seg_map == 0]
blured_bg = cv2.GaussianBlur(bg_img,(11,11),0)
result = np.zeros_like(bg_img)
# 合成
result[seg_map > 0] = resized_im[seg_map > 0]
result[seg_map == 0] = blured_bg[seg_map == 0]
# 背景变换与合成
result_2 = np.zeros_like(bg_img)
result_2[seg_map > 0] = src_resized[seg_map > 0]
result_2[seg_map == 0] = resized_view[seg_map == 0]
cv2.imshow('src',src)
cv2.imshow('resized_im',resized_im)
cv2.imshow("seg_image",seg_image)
cv2.imshow('bg_image',bg_img)
cv2.imshow('blured_bg',blured_bg)
cv2.imshow('result',result)
cv2.imshow('result_2',result_2)
cv2.waitKey()
cv2.destroyAllWindows()
程序运行结果:
原始图像:
提取的人像Mask图像:
背景图像:
背景模糊图像:
背景虚化结果:
背景替换结果:
基本实现人像背景虚化效果与背景替换,但是还有很多细节没有优化,后期将进一步优化。
python按钮虚化,深度学习与图像处理实例:人像背景虚化与背景替换相关推荐
- 深度学习与图像处理实例:人像背景虚化与背景替换
简单人像背景虚化处理思路如下: 对图像内容分割,提取人像,背景 背景模糊处理 人像与模糊处理后的背景融合 本实例使用DeepLabV3图像分割深度学习模型实现.代码如下: import os from ...
- 如何用 Python 进行基于深度学习的计算机视觉项目开发?
令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...
- 深度学习(图像处理)代码库
为大家整理的代码资源库,收集了大量深度学习项目图像处理领域的代码链接.包括图像识别,图像生成,看图说话等等方向的代码,所有代码均按照所属技术领域建立索引,以便大家查阅使用. 2.1 图像生成 2.1 ...
- Python实现的深度学习技术在水文水质领域应用
当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别.语音识别.自然语言处理等领域取得了显著的成效.它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发 ...
- Python机器学习、深度学习库总结(内含大量示例,建议收藏)
Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 目前,随着人工 ...
- Python机器学习、深度学习库总结
Python机器学习.深度学习库总结(内含大量示例,建议收藏) 前言 python常用机器学习及深度学习库介绍 总结与分类 python 常用机器学习及深度学习库总结 分类 更多 前言 为了大家能够对 ...
- 30个顶级Python库 | 用于深度学习、自然语言处理和计算机视觉
CDA数据分析师 出品 作者:Matthew Mayo 编译:Mika 今天我们来盘点一下有哪些用于深度学习.自然语言处理和计算机视觉的顶级Python库. 我们尽力将每个库按预期的使用情况进行归类, ...
- 双一流博士整理的计算机视觉学习路线(深度学习+传统图像处理)
因工作需要,年初花了4个月左右时间学习了机器学习.神经网络相关的知识,工作日每天大概学习4-6个小时,周末每天大概10个小时,工作中的需求应对也得心应手了. 想快速入门的话,从自己的经验看,可以先不看 ...
- Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用
Python是功能强大.免费.开源,实现面向对象的编程语言,在数据处理.科学计算.数学建模.数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象.海洋.地理.气候.水文和生态等地学领 ...
最新文章
- 低版本浏览器支持css3 Media查询的方法, ie6-ie8 不支持css3 的时候用respond.js,html5shiv.js 【非常实用哦】。。。。。。。。。。。。...
- 鑿婂瓙鏇版祴璇曡崏绋縶29C28FD771BA4B0D8693}
- Chapter 1 First Sight——9
- python语言中,对于cursor的查询明明有结果,为什么print cursor.rowcount结果为-1?
- 史蒂夫·乔布斯很懂团队建设
- 配置ip地址四种方法,方便学习linux的朋友
- COM应用实例--获取桌面墙纸路径
- Python、数据分析、机器学习、区块链大牛在偷偷看的9本书
- 直方图(信息学奥赛一本通-T1115)
- Java 蓝桥杯 A+B problem
- mysql 长轮询_基于HTTP长轮询实现简单推送
- SpringBoot - 多Profile使用与切换
- 一步一步写算法(之线性队列)
- 38个MySQL数据库的小技巧
- Vuex的State核心概念
- jquery 自定义插件!
- 记录一下我的蓝牙遥控小车
- 碧桂园建筑机器人造楼,梦照进现实还是“海市蜃楼”?
- dubbo服务者源码分期
- 基于matlab 论文知网,基于Matlab的数字图像处理