语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆

news2024/11/28 2:34:38

文章目录

  • mask图像介绍
  • 步骤
  • 代码

mask图像介绍

根据 mask 图像来画分割对象的外接椭圆是一种常见的图像分割任务。Mask 图像通常是一个二值图像,其中包含了感兴趣对象的像素。通常情况下,白色像素表示对象,黑色像素表示背景。

步骤

以下是一般的步骤,演示如何根据 mask 图像来画分割对象的外接椭圆:

  • 加载 Mask 图像: 读取包含对象分割信息的 mask 图像。这个图像可以是单通道的灰度图像,其中对象区域是白色,或者是具有 alpha 通道的带有透明背景的图像。
  • 寻找对象轮廓: 使用 cv2.findContours() 函数查找 mask 图像中对象的轮廓。这些轮廓将帮助我们确定对象的形状。
  • 拟合外接椭圆: 对每个对象轮廓,使用 cv2.fitEllipse() 函数计算其外接椭圆。
  • 绘制外接椭圆: 使用 cv2.ellipse() 函数将计算得到的外接椭圆绘制在原始图像上,或者创建一个新的图像来显示结果。

代码

输入图片
在这里插入图片描述
代码

import cv2
import numpy as np

# 读取图像
image = cv2.imread('7.png')
# print(image.shape)
# exit()
# 将图像转换为灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用二值化处理图像
ret, binary_image = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 查找二值化图像中的轮廓
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # CHAIN_APPROX_SIMPLE

# 遍历轮廓并绘制外接圆
for contour in contours:
    if len(contour) >= 5:
        # 计算外接椭圆
        ellipse = cv2.fitEllipse(contour)

        # 绘制外接椭圆
        cv2.ellipse(image, ellipse, (0, 255, 0), 2)

# 显示结果
cv2.imshow('Image with Circles', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出图片
在这里插入图片描述

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

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

相关文章

Sub-1 GHz、低噪声放大器芯片MS2630

MS2630 是一款 Sub-1 GHz 低功耗、低噪声放大器 (LNA) 芯 片。芯片采用先进制造工艺,采用 SOT23-6 的封装形式。 主要特点 ◼ 典型噪声系数:1.57dB ◼ 典型功率增益:16.3dB ◼ 典型输出 P1dB : -9.2dBm ◼ 工作频率&am…

PHP 伪协议:使用 php://input 访问原始 POST 数据

文章目录 参考环境PHP 伪协议概念为什么需要 PHP 伪协议? php://input为什么需要 php://input?更灵活的数据处理减小性能压力 发送 POST 数据HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 基操 enable_post_data_…

【ElasticSearch】基于 Java 客户端 RestClient 实现对 ElasticSearch 索引库、文档的增删改查操作,以及文档的批量导入

文章目录 前言一、对 Java RestClient 的认识1.1 什么是 RestClient1.2 RestClient 核心类:RestHighLevelClient 二、使用 Java RestClient 操作索引库2.1 根据数据库表编写创建 ES 索引的 DSL 语句2.2 初始化 Java RestClient2.2.1 在 Spring Boot 项目中引入 Rest…

关系的性质(自反,反自反,对称,反对称,传递)

自反 若∀a∈A&#xff0c;必有<a,a>∈R&#xff0c;则称R是自反的&#xff0c;&#xff08;关系矩阵对角线都为1&#xff09;。 例&#xff1a;A{1,2,3}&#xff0c;R{<1,1,>,<2,2>,<3,3> 反自反 若∀a∈A&#xff0c;必有<a,a>R&#xff0c;…

微服务架构的未来:跨边界的云原生整合

文章目录 微服务架构的基础微服务的挑战云原生的崛起跨边界的云原生整合实现跨边界的云原生整合跨边界的云原生整合案例结论 &#x1f389;欢迎来到架构设计专栏~微服务架构的未来&#xff1a;跨边界的云原生整合 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&…

Android Studio修改虚拟机AVD Manger目录

Android Studio修改虚拟机AVD Manger目录 1、在AS的设备管理器Device Manager中删除原来创建的所有虚拟机&#xff08;Android Virtual Device&#xff09;&#xff1b; 2、新建一个自定义的AVD目录&#xff0c;例如&#xff1a;D:\Android\AndroidAVD 3、在高级系统设置中增加…

flutter出现entrypoint isn‘t within the current project

更新了android studio版本&#xff0c;打开一个老的flutter项目时&#xff0c;无法运行&#xff0c;打开configuration配置&#xff0c;提示错误entrypoint isn’t within the current project. 解决办法 1、删掉目录.idea, .gradle, .dart_tool退出重新打开项目 2、选中根目…

【Linux】Git使用

一、Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理很小或非常大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用了分布…

人脸动作迁移——基于DaGAN深度感知的生成对抗网络操作对口型数字人

前言 口播视频生成旨在合成具有源图像和驱动视频的身份和姿势信息的协同人脸视频。现有方法主要依赖于从输入图像中学到的二维表示&#xff08;如外观和运动&#xff09;&#xff0c;但密集的三维面部几何信息&#xff08;如像素深度&#xff09;对任务至关重要。这有助于生成…

raft算法的自我理解

1、raft算法是什么&#xff1f; 答&#xff1a;共识算法 2、raft算法有什么用&#xff1f; 答&#xff1a;维持不同机器的强一致性 3、raft算法通过什么方式来维持不同机器的强一致性&#xff1f; 答&#xff1a;传递log日志 &#xff0c;按照官方的说法日志里面包含命令&…

泛型的小结

文章目录 什么是泛型泛型的相关概念泛型的作用 泛型的使用泛型类语法泛型接口语法泛型方法语法泛型类的简单示例泛型接口的简单示例基于泛型的简单工厂方法泛型的上界与下界 泛型的一些使用建议 什么是泛型 从JDK1.5开始引入泛型&#xff08;generic&#xff09;语法。对类型实…

北邮22级信通院数电:Verilog-FPGA(4)第四第五周实验 密码保险箱的设计

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.密码箱的功能和安全性 显示&#xff1a;…

Python—Scrapy实践项目

爬取豆瓣电影2022年Top250部经典电影 1.项目概述 从https://movie.douban/top250爬取电影的标题、评分、主题。我在之前使用普通的爬虫实现了类似的功能&#xff0c;可以对比来进行学习&#xff08;Python爬虫——爬虫基础模块和类库&#xff08;附实践项目&#xff09;&#…

Spring框架(中)

1、基于注解管理Bean&#xff1a; 1、开启组件扫描&#xff1a; Spring 默认不使用注解装配 Bean&#xff0c;因此我们需要在 Spring 的 XML 配置中&#xff0c;通过 context:component-scan 元素开启 Spring Beans的自动扫描功能。开启此功能后&#xff0c;Spring 会自动从扫…

JVM CMS和G1执行过程比较

CMS CMS&#xff08;Concurrent Mark Sweep&#xff09;收集器是一种以获取最短回收停顿时间为目标的收集器。由于大部分 Java 应用主要集中在互联网网站以及基于浏览器的 B/S 系统的服务端&#xff0c;这类应用通常会较为关注服务的响应速度&#xff0c;希望系统的停顿时间尽…

公司软文怎么写?如何写好软文?

软文&#xff0c;即柔性广告&#xff0c;是通过文字、图片等形式&#xff0c;以一种隐性的方式&#xff0c;将广告信息融入到文章中&#xff0c;以达到宣传、推广的目的。它相较于硬广告&#xff0c;更能深入人心&#xff0c;更易被接受。 首先&#xff0c;软文能够提升品牌的…

xlsx使用table_to_book报错Uncaught Unsupported origin when DIV is not a TABLE

背景&#xff1a;const workbook XLSX.utils.table_to_book(document.querySelector(‘#table-export’),{ raw: true//保留原始字符串 })报错Uncaught Unsupported origin when DIV is not a TABLE 原因&#xff1a;el-table是div格式 过程1&#xff1a;获取深层次的table…

使用Docker安装JupyterHub

安装JupyterHub 拉取Jupyter镜像并运行容器 docker run -d -p 8000:8000 --name jupyterhub jupyterhub/jupyterhub jupyterhub # -d&#xff1a;后台运行 # -p 8000:8000&#xff1a;宿主机的8000端口映射容器中的8000端口 # --name jupyterhub&#xff1a;给运行的容器起名…

H3C 防火墙策略

H3C防火墙有安全策略和域间策略&#xff0c;安全策略的优先级大于域间策略&#xff0c;会优先匹配安全策略&#xff0c;匹配不到才会匹配域间策略 域间策略&#xff1a;any to any的域间策略优先级低于具体的区域到具体的区域的域间策略 安全策略匹配顺序&#xff1a;从上到下…

剑指offer——JZ34 二叉树中和为某一值的路径(二) 解题思路与具体代码【C++】

一、题目描述与要求 二叉树中和为某一值的路径(二)_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入一颗二叉树的根节点root和一个整数expectNumber&#xff0c;找出二叉树中结点值的和为expectNumber的所有路径。 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过…