YOLOV8图像分割预测后输出mask图

训练一个yolov8模型后,用官方的预测脚本一般是:

results = model.predict(img_path, save=True, save_dir=output_folder)

运行此代码会直接在run里面生成一个文件夹,保存预测图像。如果要获取分割后的mask点,或mask的轮廓点,可以这样:

1、先定义颜色列表,多个mask时可以用不同颜色表示

# 定义颜色列表color_palette = [[0, 0, 255],  # 红色[0, 255, 0],  # 绿色[255, 0, 0],  # 蓝色[0, 255, 255], # 黄色[255, 0, 255]  # 紫色
]# 随机生成颜色
def generate_random_color():return [random.randint(0, 255) for _ in range(3)]

2、将mask叠加到原图上

image_org = cv2.imread(img_path)# 进行预测
results = model.predict(img_path, save=True, save_dir=output_folder)
show_mask_or_contour = True
if results:print(f"Predicted for {img_path}:")for r in results:if not r.masks:continueif show_mask_or_contour:# 获取每个mask的轮廓for i, polygon in enumerate(r.masks.xy):# 将浮点数坐标点转换为整数类型polygon = [(int(point[0]), int(point[1])) for point in polygon]# 选择或生成颜色if i < len(color_palette):color = color_palette[i]else:color = generate_random_color()  # 如果预定义颜色用尽,生成新的随机颜色for x, y in polygon:image_org[y, x] = color else:# 获取每个mask所有点for idx, mask in enumerate(r.masks):if mask.data.dim() == 3 and (mask.data.size(0) == 1 or mask.data.size(2) == 1):maskdata= mask.data.squeeze()  # 这会移除大小为1的维度# 缩放掩码到目标图像的尺寸resized_mask = cv2.resize(maskdata.cpu().numpy(), (mask.orig_shape[1], mask.orig_shape[0]),interpolation=cv2.INTER_NEAREST)# 获取掩码中非零点的坐标y_indices, x_indices = np.where(resized_mask > 0)# 选择或生成颜色if idx < len(color_palette):color = color_palette[idx]else:color = generate_random_color()  # 如果预定义颜色用尽,生成新的随机颜色ratio = 0.3 设置了透明度for y, x in zip(y_indices, x_indices):# 提取原始颜色original_color = image_org[y, x]# 计算新颜色new_color = [int(c * ratio + original_color[i] * (1 - ratio)) for i, c in enumerate(color)]# 更新图像image_org[y, x] = new_color

牙结石分割结果:

发现轮廓点并不是连续点,如有同学有不一样的结果,谢谢告知

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 螺旋矩阵填数(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

C#——里氏转换详情

里氏转换 里氏转换就是派生类的对象赋值给父类对象&#xff0c;反之则不行 实例 : 先创键一个类然后继承 调用

一种502 bad gateway nginx/1.18.0的解决办法

背景:上线的服务突然挂掉了 step1&#xff0c;去后端日志查看&#xff0c;发现并无异常&#xff0c;就是请求无法被接收 step2&#xff0c;查看了nginx的错误日志&#xff0c;发现该文件为空 step3&#xff0c;查看了niginx的运行日志&#xff0c;发现了以下问题 [error] 38#…

第4章,在 PyCharm 中创建、打开、关闭项目的操作

在 PyCharm 中创建、打开、关闭项目的操作 在PyCharm中创建、打开和关闭项目的操作步骤。以下是每个操作的步骤说明&#xff0c;以及在PyCharm界面中可能对应的区域&#xff1a; 1、创建新项目 1&#xff09;启动PyCharm&#xff1a; 打开PyCharm IDE。 2&#xff09;创建新…

第4章 客户端-客户端管理

1. 客户端API 1.1client list client list命令能列出与Redis服务端相连的所有客户端连接信息。 127.0.0.1:6379> client list id254487 addr10.2.xx.234:60240 fd1311 name age8888581 idle8888581 flagsN db0 sub0 psub0 multi-1 qbuf0 qbuf-free0 obl0 oll0 omem0 events…

C# 类中访问修饰符的优先级

参考链接 : C# 指南 - .NET 托管语言 | Microsoft Learn 访问修饰符 - C# | Microsoft Learn

Redis 内存碎片是什么?如何清理?

Redis 内存碎片相关的问题在得物、美团、阿里、字节、携程等公司的后端面试中都曾出现过&#xff0c;还是建议认真准备一下。即使不是准备面试&#xff0c;日常开发也是能够用到的&#xff01; 什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子&…

计网实训——不相同网段的PC相互通信

目录 提前准备APP路由器指令 实验一1、实验需求&#xff08;1&#xff09;实现同网段的PC相互通信。&#xff08;2&#xff09;实现不相同网段的PC相互通信。&#xff08;3&#xff09;分析相同和不同网段PC通信时MAC地址的变化。 2、实验拓扑3、实验步骤及实验截图&#xff08…

如何用Vue3和Plotly.js绘制动态3D图表?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Plotly.js: 使用Vue.js动态加载数据并绘制图表 应用场景 在数据可视化应用中&#xff0c;需要将数据动态加载到图表中并进行实时更新。本文将展示如何使用Plotly.js和Vue.js实现这一功能&#xff0c;从加载外…

http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解

文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞&#xff08;Head-of-Line Blocking&#xff09;1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 http3详解&#xff1a;http://t.csdnimg.cn/h45r3 HTTP/0.9 发布时间&#xff1a;1991年 特点&#xff1a; 只支持 GET 方…

关于怎么将wireshark抓包视频流转为视频播放出来

0.安装wireshark 安装PotPlayer 1.将以下两个插件放入 C:\Program Files\Wireshark\plugins 目录中 2.筛选视频流数据包&#xff0c;右键Decode As… 改为RTP 或者 右键->follow&#xff08;追踪流&#xff09;->UDP stream 然后叉掉弹窗 3.选择菜单Edit->Prefe…

BUUCTF-WEB(第二天)

[极客大挑战 2019]Http 这题明显考察的是http协议&#xff0c;打开靶场访问什么也没有&#xff0c;F12来查看看控制台的html源码&#xff0c;直到最后那里我们才看到一个Secret.php文件4&#xff0c;所以直接访问即可。 回显字符串&#xff1a;It doesnt come from https://S…

探究互联网领域知识,解密数字化时代神秘面纱

随着信息时代的不断发展&#xff0c;互联网的发展呈现出爆炸式的增长&#xff0c;以至于引起广泛的关注和深入的探究。互联网作为一个庞大的网络体系&#xff0c;涵盖着无穷无尽的信息和知识&#xff0c;其背后的科技和应用已经改变了人们的生活&#xff0c;产生了翻天覆地的变…

每日一道算法题 有效括号序列

题目 有效括号序列_牛客题霸_牛客网 (nowcoder.com) Python 1长度必须为偶数 2就像开心消消乐一样&#xff0c;一左一右就消掉。 class Solution:def isValid(self , s: str) -> bool:# write code here# flag[(),{},[]]# for _ in range(len(s)//2):# for i in fl…

查普曼大学团队使用惯性动捕系统制作动画短片

道奇电影和媒体艺术学院是查普曼大学的知名学院&#xff0c;同时也是美国首屈一指的电影学院之一&#xff0c;拥有一流电影制作工作室。 最近&#xff0c;道奇学院的一个学生制作团队接手了一个项目&#xff0c;该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…

Maven笔记(更新中)

一、Maven简介 Maven是一款为Java项目构建,依赖管理的工具(软件),使用Maven可以自动化构建,测试,打包和发布项目,大大提高了开发效率和质量 Maven主要作用理解 依赖管理 Maven可以管理项目的依赖,包括自动下载所需依赖库,自动下载依赖所需的依赖并且保证版本没有冲突,依赖版…

docker +tmux 远程本地gdb调试

文章目录 远程调试docker pull失败docker上容器运行程序失败宿主机远程调试docker中运行的程序环境准备调试步骤 本地调试bugpwngdbtmuxTmux复制粘贴到其他地方pwngdb和tmux优化~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~ 远程调试 但目前不知道如何实现可以边跟着脚本…

深入探索Java开发世界:Redis~类型分析大揭秘

文章目录 深入探索Java开发世界&#xff1a;Redis~类型分析大揭秘一、数据结构类型二、分布式锁类型三、事物命令类型四、事物三大特性类型 深入探索Java开发世界&#xff1a;Redis~类型分析大揭秘 Redis数据库基础知识&#xff0c;类型知识点梳理~ 一、数据结构类型 Redis是一…

Redis集群部署合集

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一&#xff1a; 实验二&#xff1a; 实验三&#xff1a; 实验四&#xff1a; 添加节点 自动分配槽位 提升节点为master&#xff1a; 实验…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…