opencv grabCut前景后景分割去除背景

news2024/11/15 15:46:38

参考:
https://zhuanlan.zhihu.com/p/523954762
https://docs.opencv.org/3.4/d8/d83/tutorial_py_grabcut.html

环境本次:
python 3.10

在这里插入图片描述

提取前景:
1、需要先把前景物体框出来
需要坐标信息,可以用windows自带的画图简单提取像素
在这里插入图片描述

矩形的格式为 (x, y, width, height)

rect = (118, 120, 732, 835)
定义了一个矩形区域,该区域用于初始化 GrabCut 算法。这个矩形区域的参数表示:

118:矩形左上角的 x 坐标。

120:矩形左上角的 y 坐标。

732:矩形的宽度。

835:矩形的高度。

因此,这个矩形从图像的坐标 (118, 120) 开始,宽度为 732 像素,高度为 835 像素。

2、完整代码

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread(r"C:\Users***\long.png")

# 创建一个与图像大小相同的掩码
mask = np.zeros(image.shape[:2], np.uint8)

# 创建两个数组,用于存储算法内部使用的临时数组
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)

# 定义一个矩形区域,该区域包含我们想要分割的前景物体
# 矩形的格式为 (x, y, width, height)
rect = (118, 120, 732, 835)

# 应用 GrabCut 算法
cv2.grabCut(image, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)

# 创建一个新的掩码,将可能的前景和确定的前景合并
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')

# 将掩码应用于图像
result = image * mask2[:, :, np.newaxis]

# 显示原始图像和分割结果
plt.subplot(121), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.title('Segmented Image'), plt.xticks([]), plt.yticks([])
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1944335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!

咱们做项目的时候可能都遇到过这种情况:项目一开始信心满满,觉得 deadline 稳了。结果呢?各种意外状况频出,时间好像怎么都不够用了,最后项目只能无奈延期,整个团队都像霜打的茄子。 说到底,还…

Elasticsearch:Golang ECS 日志记录 - zap

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志,并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下,会添…

集合的概念

目录 概述 1 集合定义 1.1 基本定义 1.2 元素和集合的关系表述 1.3 集合分类 1.4 集合描述 1.5 集合关系描述 2 集合的运算 2.1 集合关系的定义 2.2 集合的运算 概述 在高等数学中,集合是指由一些具有共同特征的对象组成的整体。这些对象可以是数字、字母…

最短路径 | 743. 网络延迟时间之 Dijkstra 算法和 Floyd 算法

目录 1 基于 Dijkstra 算法1.1 代码说明1.2 完整代码 2 基于 Floyd 算法2.1 代码说明2.2 完整代码 前言:我在做「399. 除法求值」时,看到了基于 Floyd 算法的解决方案,突然想起来自己还没有做过最短路径相关的题。因此找来了「743. 网络…

灰色关联分析【系统分析+综合评价】

系统分析: 判断哪个因素影响最大 基本思想:根据序列曲线几何形状的相似程度来判断其练习是否紧密 绘制统计图并进行分析 确定子序列和母序列 对变量进行预处理(去量纲、缩小变量范围) 熟练使用excel与其公式和固定&#xff08…

微服务安全——OAuth2详解、授权码模式、SpringAuthorizationServer实战、SSO单点登录、Gateway整合OAuth2

文章目录 Spring Authorization Server介绍OAuth2.0协议介绍角色OAuth2.0协议的运行流程应用场景授权模式详解客户端模式密码模式授权码模式简化模式token刷新模式 OAuth 2.1 协议介绍授权码模式PKCE扩展设备授权码模式拓展授权模式 OpenID Connect 1.0协议Spring Authorizatio…

C语言数据结构:基于EasyX的飞机订票系统,有前端界面

数据结构课程设计说明书 学 院、系: 软件学院 专 业: 软件工程 班 级: 学 生 姓 名: 范 学 号: 设 计 题 目: 飞机订票系统 起 迄 日 期: 2024年6月18日~ 20…

笔记小结:现代卷积神经网络之批量归一化

本文为李沐老师《动手学深度学习》笔记小结,用于个人复习并记录学习历程,适用于初学者 训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化(batch normalization)&#xf…

vue3 + ts 报错:Parsing error: Unexpected token : eslint

报错:Parsing error: Unexpected token : eslint 解决: 在 .eslintrc.json 文件中加入 "parser": "babel/eslint-parser"配置 “parser”: “babel/eslint-parser” 告诉 ESLint 在检查代码之前,先使用 Babel 的解析器…

lua 游戏架构 之 游戏 AI (三)ai_attack

这段Lua脚本定义了一个名为 ai_attack 的类,继承自 ai_base 类。 lua 游戏架构 之 游戏 AI (一)ai_base-CSDN博客文章浏览阅读119次。定义了一套接口和属性,可以基于这个基础类派生出具有特定行为的AI组件。例如,可以…

深度学习:引领未来的人工智能技术(比喻)

深度学习:引领未来的人工智能技术 引言 随着人工智能(AI)的快速发展,深度学习(Deep Learning)作为其中最具革命性的技术之一,正在改变着各个行业。从自动驾驶到医疗诊断,从自然语言…

python—selenium爬虫

文章目录 Selenium与Requests对比一、工作原理二、功能特点三、性能表现 下载对应驱动1.首先我们需要打开edge浏览器,打开设置,找到“关于Microsoft Edge”,点击进入查看浏览器版本。2.查找版本之后,搜索edge驱动下载,…

Unity UGUI 之 ScrollBar与ScrollView

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.什么是ScrollBar 滚动块:Unity - Manual: Scrollbar 2.重要参数 该笔记来源…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…

Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是什么? Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口…

centos系统mysql数据库压缩备份与恢复

文章目录 压缩备份一、安装 xtrabackup二、数据库中创建一些数据三、进行压缩备份四、模拟数据丢失,删库五、解压缩六、数据恢复 压缩备份 一、安装 xtrabackup 确保已经安装了 xtrabackup 工具。可以从 Percona 的官方网站 获取并安装适合你系统的版本。 # 添加…

2024在线PHP加密网站源码

源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335

学习日志:JVM垃圾回收

文章目录 前言一、堆空间的基本结构二、内存分配和回收原则对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代主要进行 gc 的区域空间分配担保 三、死亡对象判断方法引用计数法可达性分析算法引用类型总结1.强引用(StrongReference…

Python+Flask+MySQL+日线指数与情感指数预测的股票信息查询系统【附源码,运行简单】

PythonFlaskMySQL日线指数与情感指数预测的股票信息查询系统【附源码,运行简单】 总览 1、《股票信息查询系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 登录2.2 程序主页面2.3 个人中心界面2.4 基金详情界面2.5 其他功能贴图 总览 自己做的项目&#…

【教程】在 VS Code 集成终端中解决 Node.js 环境变量识别问题

背景 外部命令,如 node 在外部的终端中可以识别到,但是在vscode的终端中不能识别到错误:node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称也就是环境变量其实是有 node 的,但是 vscode 的集成终端中就是…