如何用Python根据指定坐标点构建多边形掩码示例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计498个文字,预计阅读时间需要2分钟。
在处理数据集时,使用了mask,但源数据集中只提供了mask顶点坐标。在Python中,如何生成仅包含1个表 示的mask区域呢?
主要借助cv2中的方法:
1.使用cv2.polylines()绘制mask区域,其中传入的points参数即为mask顶点坐标。
2.设置lineType参数为cv2.LINE_AA,使绘制出的mask区域边缘更加平滑。
3.使用cv2.fillPoly()填充绘制出的mask区域,生成最终的mask图像。
以下是一个简单的示例代码:
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分钟。
在处理数据集时,使用了mask,但源数据集中只提供了mask顶点坐标。在Python中,如何生成仅包含1个表 示的mask区域呢?
主要借助cv2中的方法:
1.使用cv2.polylines()绘制mask区域,其中传入的points参数即为mask顶点坐标。
2.设置lineType参数为cv2.LINE_AA,使绘制出的mask区域边缘更加平滑。
3.使用cv2.fillPoly()填充绘制出的mask区域,生成最终的mask图像。
以下是一个简单的示例代码:
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的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

