• 语义分割笔记(三):通过opencv对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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

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

  • 相关阅读:
    hadoop入门(六):集群测试
    C++标准模板(STL)- 类型支持 (数值极限,min_exponent10,max_exponent,max_exponent10)
    概率论与数理统计
    记录一次数据库CPU被打满的排查过程
    ES-初识ES
    窗口函数-分组排序:row_number()、rank() 、dense_rank()、ntile()
    Python 面试题解析
    Kafka开篇
    List获取集合中的重复元素
    HOT100打卡—day11—【贪心】—最新9.5(剩3题)
  • 原文地址:https://blog.csdn.net/m0_51004308/article/details/133687642