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

文章目录

mask图像介绍

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

步骤

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

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

代码

输入图片

代码

python 复制代码
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()

输出图片

相关推荐
CXDNW16 分钟前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
使者大牙17 分钟前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
ssf-yasuo29 分钟前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt
ajsbxi42 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
TeYiToKu1 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws1 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
撞南墙者1 小时前
OpenCV自学系列(1)——简介和GUI特征操作
人工智能·opencv·计算机视觉
王哈哈^_^2 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
柳鲲鹏2 小时前
OpenCV视频防抖源码及编译脚本
人工智能·opencv·计算机视觉
jndingxin2 小时前
OpenCV视觉分析之目标跟踪(8)目标跟踪函数CamShift()使用
人工智能·opencv·目标跟踪