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

news2024/10/6 8:31:28

训练一个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:
           continue

		if 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.coloradmin.cn/o/1869514.html

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

相关文章

redis需要知道的点

目录 一、为什么要用缓存 二、使用 Redis有哪些好处 三、什么是 redis&#xff1f; 四、redis和memcached区别 五、为什么redis单线程模型效率也能那么高 六、redis的线程模型 七、redis 6.0 引入多线程 八、为什么Redis需要把所有数据放到内存中&#xff1f; 九、Red…

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1&#xff0c;P2&#xff0c;坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​)&#xff0c;圆的半径为 r r r&#xff0c;求圆心的坐标。 假定P1&#xff0c;P2为任意两点&#xff0c;则两点连成线段的中点坐标是 x m i …

【精选】数据治理项目实施(合集)05——解码“数据架构”,数据架构包含哪些内容?

上一篇讲到了数据治理项目的前期调研工作&#xff0c;继数据调研工作完成之后&#xff0c;就要开始关于治理工作的各项方案设计&#xff0c;整体方案设计包括数据架构、元数据、主数据、数据质量、数据安全、指标标签体系、数据生命周期管理和管理评价等内容。这一篇重点讲一下…

GIT-LFS使用

0.前言 目前git仓库有很多很大的文件需要管理&#xff0c;但是直接上传&#xff0c;每次clone的文件太大&#xff0c;所有准备使用git-lfs解决。 1、下载和安装 Git LFS 1.1、直接下载二进制包&#xff1a; Releases git-lfs/git-lfs GitHub 安装 Git LFS sudo rpm -ivh…

RabbitMQ基本概念

RabbitMQ是AMQP协议的一个开源实现&#xff0c;所以其基本概念也就是的 AMQP 协 议中的基本概念。如图3-1所示是 RabbitMQ 的整体架构图。 Message(消息):消息是不具名的&#xff0c;它由消息头和消息体组成。消息体是不透明的&#xff0c; 而消息头则由一系列可选属性组成&…

ROS1通信机制——以topic为例

ROS1 的通信机制 ROS1是一个分布式框架&#xff0c;为用户提供多节点&#xff08;进程&#xff09;之间的通信服务。 ROS1通信时有一个中心节点&#xff08;ROS Master&#xff09;&#xff0c;进行信息匹配等工作。 ROS1 的话题通信机制 通信链接&#xff1a;XML/RPC 信息传…

GMSB文章六:微生物SCFA关联分析

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 介绍 微生物短链脂肪酸&#xff08;SCFAs&#xff09;是由肠道微生物发酵膳食纤维、抗性淀粉、低…

蒸汽架空管道中的关键守护者:滑动管托、导向管托与固定管托

蒸汽架空管道中的关键守护者&#xff1a;滑动管托、导向管托、固定管托与补偿器的重要角色在蒸汽架空管道系统中&#xff0c;每一个组件都扮演着不可或缺的角色&#xff0c;共同确保管道的安全、高效运行。今天&#xff0c;我们就来深入探讨滑动管托、导向管托、固定管托以及补…

信息安全时代,大学生是否有必要考取NISP证书?

在数字化浪潮席卷全球的今天&#xff0c;信息安全已成为国家、企业乃至个人都必须正视的重要议题。作为新时代的大学生&#xff0c;我们身处这个信息爆炸的时代&#xff0c;如何提升自己的信息安全素养&#xff0c;成为了一个值得深思的问题。而NISP(国家信息安全水平考试)证书…

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1&#xff1a;注册单例类型&#xff08;main.cpp&#xff09;step2&#xff1a;定义类和私有构造函数&#xff08;keyboardinputmanager.h&#xff09;step3:&#xff08;keyboardinputmanager.cpp&#xff09;step4&#xff1a;在qml中…

云端智慧,赋能风电场:工业级控制系统云监控网关

风力发电场监控平台实现对风电场的运行状态和风机的实时数据进行监测、控制和管理&#xff0c;提高风电场的可靠性和运行效率&#xff0c;降低维护成本&#xff0c;实现智能化管理。 风机机组PLC、多功能仪表、无线测温、温度变送器、档位变送器、设备接入网关上传数据服务器。…

第1章 框架学习的基石与实战策略

第1章框架学习的基石与实战策略 1.1 框架学习的引路人&#xff1a;权威教程的重要性 在编程的世界里&#xff0c;掌握一个框架就像是装备了一套精良的工具&#xff0c;这不仅能显著提升开发速度&#xff0c;还能展现一个程序员的专业水平。对于那些刚刚踏入编程领域的初学者来…

在线开发、实时交互 | 三维天地低代码开发平台助力提高项目交付速度

1.什么是低代码开发平台? 低代码开发平台基于北京三维天地科技股份有限公司自研原生技术架构研发。三维天地作为国内知名的检验检测信息化领域软件开发服务商,拥有多项自主知识产权及自主研发核心技术,致力于为客户提供信息化整体解决方案及相关软件产品与服务。 三维天地低…

【Java面试场景题】如何优化系统架构设计来缓解流量压力提升并发性能?

一、问题解析 我会以直播互动为例&#xff0c;带你看看读多写多的情况下如何应对流量压力。- 一般来说&#xff0c;这种服务多数属于实时互动服务&#xff0c;因为时效性要求很高&#xff0c;导致很多场景下&#xff0c;我们无法用读缓存的方式来降低核心数据的压力。所以&…

B端系统:配置页面如何设计,这可是用户体验的关键的关键。

提升配置页面体验的十大原则 设计B端系统的配置页面时&#xff0c;用户体验确实是非常关键的。以下是一些设计原则和建议&#xff0c;可以帮助提高配置页面的用户体验&#xff1a; 简洁明了&#xff1a;配置页面应该尽量简洁明了&#xff0c;避免过多的复杂选项和信息。使用清…

基于先验知识引导的三域Transformer-GAN,直接从低计数正电子发射断层扫描图像重建| 文献速递-先进深度学习疾病诊断

Title 题目 Prior Knowledge-guided Triple-Domain Transformer-GAN for Direct PET Reconstruction from Low-Count Sinograms 基于先验知识引导的三域Transformer-GAN&#xff0c;用于直接从低计数正电子发射断层扫描图像重建 01 文献速递介绍 正电子发射断层扫描&…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-38实战Kaggle比赛:图像分类 (CIFAR-10)

38实战Kaggle比赛&#xff1a;图像分类 (CIFAR-10) 比赛链接&#xff1a;CIFAR-10 - Object Recognition in Images | Kaggle 导入包 import os import glob import pandas as pd import numpy as np import torch import torchvision from torch.utils.data import Dataset…

【应届应知应会】Linux常用指令

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 文件与目录管理 目录操作命令&#xff1a; ls [选项] [目录或文件] mkdir 文件操作命令&#xf…

MacOS java多版本安装与管理

安装sdkman curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk version正常出现sdkman版本号就安装成功了 # 安装java # 安装java8 sdk install java 8.0.412.fx-zulu建议和上述一样安装 fx-zulu 的jdk&#xff0c…

谷歌SEO在外贸推广中的应用效果如何?

谷歌SEO在外贸推广中非常有效。通过优化网站&#xff0c;可以提高在搜索结果中的排名&#xff0c;这意味着更多的潜在客户会看到你的产品和服务。 一个高排名的网站能带来更多自然流量&#xff0c;不需要花费广告费用。这种流量通常质量较高&#xff0c;因为用户是主动搜索相关…