根据 mask 图像来画分割对象的外接椭圆是一种常见的图像分割任务。Mask 图像通常是一个二值图像,其中包含了感兴趣对象的像素。通常情况下,白色像素表示对象,黑色像素表示背景。
以下是一般的步骤,演示如何根据 mask 图像来画分割对象的外接椭圆:
输入图片
代码
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()
输出图片