如何用Python根据指定坐标点构建多边形掩码示例?

2026-05-28 23:311阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计498个文字,预计阅读时间需要2分钟。

如何用Python根据指定坐标点构建多边形掩码示例?

在处理数据集时,使用了mask,但源数据集中只提供了mask顶点坐标。在Python中,如何生成仅包含1个表 示的mask区域呢?

主要借助cv2中的方法:

1.使用cv2.polylines()绘制mask区域,其中传入的points参数即为mask顶点坐标。

2.设置lineType参数为cv2.LINE_AA,使绘制出的mask区域边缘更加平滑。

3.使用cv2.fillPoly()填充绘制出的mask区域,生成最终的mask图像。

如何用Python根据指定坐标点构建多边形掩码示例?

以下是一个简单的示例代码:

python

import cv2import numpy as np

假设mask顶点坐标为pointspoints=np.array([[x1, y1], [x2, y2], [x3, y3]], dtype=np.int32)

创建一个空白图像image=np.zeros((height, width, 3), dtype=np.uint8)

绘制mask区域cv2.polylines(image, [points], True, (255, 255, 255), 2, cv2.LINE_AA)

填充mask区域cv2.fillPoly(image, [points], (255, 255, 255))

显示结果cv2.imshow(Mask Image, image)cv2.waitKey(0)cv2.destroyAllWindows()

在这段代码中,你需要将`points`数组中的坐标替换为你自己的mask顶点坐标,`width`和`height`分别替换为你创建的空白图像的宽度和高度。运行代码后,你会看到一个包含1个表示的mask区域的图像。

处理数据集的过程中用到了mask 但是源数据集中只给了mask顶点的坐标值,那么在python中怎么实现生成只有0、1表示的mask区域呢?

主要借鉴cv2中的方法:

(我使用的数据情况是将顶点坐标分别存储在roi.mat中的x和y元素)

matfn = 'roi.mat' data = sio.loadmat(matfn) x_cor = data['x'] y_cor = data['y'] im = np.zeros(图像对应尺寸, dtype="uint8") cor_xy = np.hstack((x_cor, y_cor)) cv2.polylines(im, np.int32([cor_xy]), 1, 1) cv2.fillPoly(im, np.int32([cor_xy]), 1) mask_array = im

这样就可以得到mask啦,注意:首先坐标对是数组形式,我们需要用‘[ ]' 转换为列表形式,然后用np.int32转化格式,这两步都放在上述标红代码中完成了。不然很容易报错。

以上这篇python实现根据给定坐标点生成多边形mask的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

本文共计498个文字,预计阅读时间需要2分钟。

如何用Python根据指定坐标点构建多边形掩码示例?

在处理数据集时,使用了mask,但源数据集中只提供了mask顶点坐标。在Python中,如何生成仅包含1个表 示的mask区域呢?

主要借助cv2中的方法:

1.使用cv2.polylines()绘制mask区域,其中传入的points参数即为mask顶点坐标。

2.设置lineType参数为cv2.LINE_AA,使绘制出的mask区域边缘更加平滑。

3.使用cv2.fillPoly()填充绘制出的mask区域,生成最终的mask图像。

如何用Python根据指定坐标点构建多边形掩码示例?

以下是一个简单的示例代码:

python

import cv2import numpy as np

假设mask顶点坐标为pointspoints=np.array([[x1, y1], [x2, y2], [x3, y3]], dtype=np.int32)

创建一个空白图像image=np.zeros((height, width, 3), dtype=np.uint8)

绘制mask区域cv2.polylines(image, [points], True, (255, 255, 255), 2, cv2.LINE_AA)

填充mask区域cv2.fillPoly(image, [points], (255, 255, 255))

显示结果cv2.imshow(Mask Image, image)cv2.waitKey(0)cv2.destroyAllWindows()

在这段代码中,你需要将`points`数组中的坐标替换为你自己的mask顶点坐标,`width`和`height`分别替换为你创建的空白图像的宽度和高度。运行代码后,你会看到一个包含1个表示的mask区域的图像。

处理数据集的过程中用到了mask 但是源数据集中只给了mask顶点的坐标值,那么在python中怎么实现生成只有0、1表示的mask区域呢?

主要借鉴cv2中的方法:

(我使用的数据情况是将顶点坐标分别存储在roi.mat中的x和y元素)

matfn = 'roi.mat' data = sio.loadmat(matfn) x_cor = data['x'] y_cor = data['y'] im = np.zeros(图像对应尺寸, dtype="uint8") cor_xy = np.hstack((x_cor, y_cor)) cv2.polylines(im, np.int32([cor_xy]), 1, 1) cv2.fillPoly(im, np.int32([cor_xy]), 1) mask_array = im

这样就可以得到mask啦,注意:首先坐标对是数组形式,我们需要用‘[ ]' 转换为列表形式,然后用np.int32转化格式,这两步都放在上述标红代码中完成了。不然很容易报错。

以上这篇python实现根据给定坐标点生成多边形mask的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。