当前位置: 首页 > news >正文

opencv-利用DeepLabV3+模型进行图像分割去除输入图像的背景

分离图像中的人物和背景通常需要一些先进的图像分割技术。GrabCut是一种常见的方法,但是对于更复杂的场景,可能需要使用深度学习模型。以下是使用深度学习模型(如人像分割模型)的示例代码:

#导入相关的库
import cv2
import numpy as np
import torch
import torchvision.transforms as T
from torchvision.models.segmentation import deeplabv3_resnet101def remove_background_with_deep_learning(image_path):# 读取图像image = cv2.imread(image_path)# 将图像转换为RGB格式image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #将图像从BGR格式转换为RGB格式,因为深度学习模型通常使用RGB。# 定义图像预处理和转换transform = T.Compose([  #定义了图像的预处理和转换步骤,包括将图像转换为PyTorch张量和标准化。T.ToTensor(),  # 将图像转换为PyTorch张量T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),  # 标准化图像])# 对图像进行预处理和转换input_tensor = transform(image_rgb)input_batch = input_tensor.unsqueeze(0)  # 添加一个维度,使其成为批处理的一部分# 加载预训练的DeepLabV3模型model = deeplabv3_resnet101(pretrained=True)model.eval()  # 设置为评估模式,不进行梯度更新# 运行模型并获取分割掩模with torch.no_grad(): #上下文管理器,用于关闭梯度计算,以提高推断速度。output = model(input_batch)['out'][0]#运行模型并获取输出。output_predictions = output.argmax(0)  # 获取模型输出中预测类别的索引# 将分割结果转换为二进制掩模mask = (output_predictions == 15).numpy()  # 在DeepLabV3模型中,15是人物的标签# 将原始图像与二进制掩模相乘,去除背景result = image * mask[:, :, np.newaxis]# 显示结果cv2.imshow('Original Image', image)cv2.imshow('Removed Background', result)cv2.waitKey(0)cv2.destroyAllWindows()
# 使用示例
remove_background_with_deep_learning(r"C:\Users\mzd\Desktop\opencv\images.jpg")

在这里插入图片描述
代码解释:
理解代码可能需要一些基本的编程和机器学习知识,以下是逐步解释代码的主要部分:

  1. 导入库: 首先,导入了用于图像处理和深度学习的库,包括OpenCV(cv2)、PyTorch和TorchVision。

  2. 定义函数: remove_background_with_deep_learning 是一个用于去除图像背景的函数。它接受一个图像路径作为参数。

  3. 读取和转换图像: 使用OpenCV读取图像,然后将图像转换为RGB格式。机器学习模型通常使用RGB格式。

  4. 图像预处理和转换: 定义了一系列图像预处理和转换步骤,将图像转换为PyTorch张量并进行标准化。

  5. 加载预训练模型: 使用deeplabv3_resnet101 模型,它是一个预训练的深度学习模型,专门用于图像分割任务。

  6. 运行模型并获取分割掩模: 将预处理后的图像输入到模型中,获取模型输出中的分割掩模。在这里,15是代表人物的类别标签。

  7. 将分割结果转换为二进制掩模: 将模型输出的分割结果转换为二进制掩模,其中值为1的像素表示属于人物的区域。

  8. 去除背景: 将原始图像与二进制掩模相乘,实现去除背景效果。

在这个函数中,将原始图像与二进制掩模相乘的目的是将背景部分置零,从而实现去除背景的效果。这是基于掩模的思想,其中掩模是一个与原始图像大小相同的二维数组,其中元素的值为0或1,用于指示哪些像素应该保留(值为1)或去除(值为0)。
具体流程如下:

  1. mask = (output_predictions == 15).numpy():通过模型的输出,生成一个二进制掩模。在这里,假设标签15对应于人物。掩模中值为1的像素表示人物,值为0的像素表示背景。
  2. result = image * mask[:, :, np.newaxis]:通过将原始图像与二进制掩模相乘,实现了以下效果:
    • 当掩模中对应位置的值为1(人物部分),相乘结果保持原始图像的颜色值;
    • 当掩模中对应位置的值为0(背景部分),相乘结果将对应位置的像素值置零。 这样,通过像素级别的相乘操作,将背景部分的像素值置零,达到了去除背景的效果。最终,result就是去除背景后的图像。

这是一种简单而有效的背景去除方法,尤其在利用深度学习模型进行图像分割的场景中得到了广泛应用。

  1. 显示结果: 使用OpenCV的 imshow 函数显示原始图像和去除背景后的图像。

  2. 使用示例: 调用 remove_background_with_deep_learning 函数,传递图像路径,这里的路径是 'path/to/your/image.jpg'。这是整个程序的入口。

相关文章:

opencv-利用DeepLabV3+模型进行图像分割去除输入图像的背景

分离图像中的人物和背景通常需要一些先进的图像分割技术。GrabCut是一种常见的方法,但是对于更复杂的场景,可能需要使用深度学习模型。以下是使用深度学习模型(如人像分割模型)的示例代码: #导入相关的库 import cv2 …...

中国版的 GPTs:InsCode AI 生成应用

前言 在上一篇文章 《InsCode:这可能是下一代应用开发平台?》中,我们介绍了一个新的应用开发平台 InsCode,它是基于云原生开发环境 云 IDE AI 辅助编程的一站式在线开发平台。 最近,InsCode 又推出了另一种全新的开…...

MySQL 学习笔记(刷题篇)

SQL进阶挑战 聚合分组查询 SQL123 select tag, difficulty, round((sum(score) - max(score) - min(score) ) / (count(score) - 2) ,1) as clip_avg_score from examination_info as ei, exam_record as er where ei.exam_id er.exam_id and ei.tag SQL and ei.diffi…...

windows系统如何配置yarn环境变量

启动前端项目,突然遇到报错: 原因在于没有安装yarn,或没有配置环境变量。 全局安装 yarn 可在vsCode中输入,也可在命令行输入(winR,输入cmd) npm install -g yarn添加环境变量 找到yarn的安…...

视频中的文字水印怎么去除?这三招学会轻松去视频水印

短视频与我们生活,工作息息相关,日常在在刷短视频时,下载保存后发现带有文字logo水印,如果直接拿来进行二次创作,不仅影响观看效果,平台流量还会受限制。怎么去除视频中的文字水印就成为了当下热门话题之一…...

Java项目学生管理系统二查询所有

学生管理 近年来,Java作为一门广泛应用于后端开发的编程语言,具备了广泛的应用领域和丰富的开发资源。在前几天的博客中,我们探讨了如何搭建前后端环境,为接下来的开发工作打下了坚实的基础。今天,我们将进一步扩展我…...

27.Spring如何避免在并发下获取不完整的Bean?

Spring如何避免在并发下获取不完整的Bean? 1、为什么获取不到完整的Bean? 我们知道, 如果spring容器已经加载完了, 那么肯定所有bean都是完整的了, 但如果, spring没有加载完, 在加载的过程中, 构建bean就有可能出现不完整bean的情况 2、如何解决读取到不完整bean的问题. …...

浅析SD-WAN企业组网部署中简化网络运维的关键技术

网络已经成为现代企业不可或缺的基础设施,它为企业提供了连接全球的桥梁。随着全球化和数字化转型的加速推进,企业面临着越来越多的网络挑战和压力。传统的网络组网方式往往无法满足企业规模扩大、分支机构增多、上云服务等需求,导致网络性能…...

【Rust】快速教程——自定义类型、数字转枚举、Cargo运行

前言 超过一定的年龄之后,所谓人生,无非是一个不断丧失的过程而已。宝贵的东西,会像梳子豁了齿一样从手中滑落下去。你所爱的人会一个接着一个,从身旁悄然消逝。——《1Q84》 \;\\\;\\\; 目录 前言自定义类型数字转枚举Cargo.tom…...

python 实现 AIGC 大语言模型中的概率论:生日相同问题的代码场景模拟

对深度学习本质而言,它实际上就是应用复杂的数学模型对输入数据进行建模,最后使用训练好的模型来预测或生成新的数据,因此深度学习的技术本质其实就是数学。随着大语言模型的发展,人工智能的数学本质被进一步封装,从业…...

SD-WAN组网中的CPE及云服务CPE部署方法

什么是CPE? CPE全称为Customer Premises Equipment,即客户端设备,在SD-WAN中通常为路由器,部署在中心点和分支上,提供连接和路由、协议转换、流量监控等功能。一般可分为硬件CPE和虚拟化CPE(virtual CPE&a…...

理解BatchNormalization层的作用

深度学习 文章目录 深度学习前言一、“Internal Covariate Shift”问题二、BatchNorm的本质思想三、训练阶段如何做BatchNorm四、BatchNorm的推理(Inference)过程五、BatchNorm的好处六、机器学习中mini-batch和batch有什么区别 前言 Batch Normalization作为最近一年来DL的重…...

uniapp实现文件预览过程

H5实现预览 <template><iframe :src"_url" style"width:100vw; height: 100vh;" frameborder"0"></iframe> </template> <script lang"ts"> export default {data() {return {_url: ,}},onLoad(option…...

深度学习-学习笔记记录

1、点云语义分割方法分类 分为5类&#xff1a;点、二维投影、体素、融合、集成 2、融合与集成的区别 融合&#xff1a; 概念&#xff1a;主要是将不同来源、类型的模型&#xff0c;例如深度学习、传统机器学习等&#xff0c;的结果或特征进行结合&#xff0c;以得到一个更好的模…...

程序员养生之道:延寿不忘初心——延寿必备

文章目录 每日一句正能量前言如何养生饮食篇运动篇休息篇后记 每日一句正能量 现代社会已不是大鱼吃小鱼的年代&#xff0c;而是快鱼吃慢鱼的年代。 前言 在IT行业中&#xff0c;程序员是一个重要的职业群体。由于长时间的繁重编程工作&#xff0c;程序员们常常忽略了身体健康…...

使用Docker安装部署Swagger Editor并远程访问编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…...

Nacos 2.X核心架构源码剖析

概述 注册中心并发处理&#xff0c;1.4.x 写时复制&#xff0c;2.1.0 读写分离&#xff1b;nacos 一般使用 AP 架构&#xff0c;即临时实例&#xff0c;1.4.x 为 http 请求&#xff0c;2.1.0 优化为 gRPC 协议&#xff1b;源码中使用了大量的事件通知机制和异步定时线程池&…...

C语言--每日选择题--Day31

第一题 1. 下面程序 i 的值为&#xff08;&#xff09; int main() {int i 10;int j 0;if (j 0)i; elsei--; return 0; } A&#xff1a;11 B&#xff1a;9 答案及解析 B if语句中的条件判断为赋值语句的时候&#xff0c;因为赋值语句的返回值是右操作数&#xff1b; …...

chrome vue devTools安装

安装好后如下图所示&#xff1a; 一&#xff1a;下载vue devTools 下载链接https://download.csdn.net/download/weixin_44659458/13192207?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-download-2%7Edefault%7ECTRLIST%7EPaid-1-13192207…...

Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式

一、Builder设计模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者&#xff0c;把他们放到一起看看他们的共同特点&#xff1a; 查看AuthenticationManagerBuilder的继承结构图&#xff1a; 查看HttpSecurity的继承结构图&#xff1a; 查看W…...

MySQL数据恢复实战:从frm和ibd文件重建完整数据表

1. MySQL数据恢复实战&#xff1a;从frm和ibd文件重建完整数据表 数据库管理员最怕听到的就是"数据丢了"三个字。我经历过好几次半夜被叫起来处理数据丢失的紧急情况&#xff0c;那种头皮发麻的感觉至今难忘。不过别担心&#xff0c;只要.frm和.ibd文件还在&#xff…...

cool-admin(midway版)数据库索引维护:重建索引与碎片整理

cool-admin(midway版)数据库索引维护&#xff1a;重建索引与碎片整理 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midway.js 3.x、ty…...

保姆级教程:用ColabFold在线版AlphaFold2,5分钟搞定你的第一个蛋白质结构预测

零门槛玩转蛋白质结构预测&#xff1a;ColabFold极简指南 蛋白质结构预测曾是生物信息学领域的"圣杯"&#xff0c;直到AlphaFold2的出现彻底改变了游戏规则。但传统方法需要复杂的本地环境配置和命令行操作&#xff0c;让许多感兴趣的非专业人士望而却步。现在&…...

3大核心策略:构建高效抖音内容采集系统的技术实践

3大核心策略&#xff1a;构建高效抖音内容采集系统的技术实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

Phi-3-Mini-128K实战JavaScript:构建前端智能代码提示插件

Phi-3-Mini-128K实战JavaScript&#xff1a;构建前端智能代码提示插件 最近在折腾前端项目时&#xff0c;我总在想&#xff0c;要是写代码时能有个更懂我的助手就好了。现有的代码补全工具虽然不错&#xff0c;但很多时候还是停留在语法层面&#xff0c;对于业务逻辑、复杂函数…...

158页精品PPT | 某大型研发制造集团信息化IT规划整体方案

许多公司在数字化转型过程中会遇到一些共同的挑战&#xff0c;比如数据孤岛、技术更新慢、员工技能不足等。这些问题会导致企业效率低下&#xff0c;难以适应市场变化。针对这些问题&#xff0c;我们提出了一套解决方案&#xff0c;核心目标是帮助企业提升数字化水平&#xff0…...

HsMod:炉石传说功能增强插件的全方位优化方案

HsMod&#xff1a;炉石传说功能增强插件的全方位优化方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说功能增强插件&#xff0c;通过55项实用功能为…...

PyTorch 2.8镜像法律科技:庭审音视频→AI摘要+关键帧提取+证据链可视化

PyTorch 2.8镜像法律科技&#xff1a;庭审音视频→AI摘要关键帧提取证据链可视化 1. 镜像概述与法律科技应用场景 在司法数字化进程中&#xff0c;庭审音视频处理正面临三大挑战&#xff1a;海量数据难以快速消化、关键信息提取效率低下、证据呈现方式单一。PyTorch 2.8深度学…...

P1095 守望者的逃离【洛谷算法习题】

P1095 守望者的逃离 网页链接 P1095 守望者的逃离 题目背景 NOIP2007 普及组 T3 题目描述 恶魔猎手尤迪安野心勃勃&#xff0c;他背叛了暗夜精灵&#xff0c;率领深藏在海底的娜迦族企图叛变。 守望者在与尤迪安的交锋中遭遇了围杀&#xff0c;被困在一个荒芜的大岛上。…...

3步解锁B站4K视频:bilibili-downloader零基础使用指南

3步解锁B站4K视频&#xff1a;bilibili-downloader零基础使用指南 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法保存B站4…...