本示例展示如何在Python中利用给定的点坐标来创建一个多边形掩模(mask),适用于计算机视觉和图像处理项目中的目标识别与分割。
在处理数据集的过程中使用了mask功能,但源数据集中仅提供了mask顶点的坐标值。为了生成一个只有0和1表示的mask区域,在Python中可以借鉴OpenCV库中的方法来实现这一目标。
具体操作如下:
```python
import scipy.io as sio
import numpy as np
import cv2
# 读取.mat文件的数据,其中x、y分别是顶点坐标的横纵坐标。
matfn = roi.mat
data = sio.loadmat(matfn)
x_cor = data[x]
y_cor = data[y]
# 创建一个与图像大小一致的全零数组
im_size = (height, width) # 需要根据实际情况指定尺寸,这里以(height, width)表示。
image_mask = np.zeros(im_size, dtype=uint8)
# 将横纵坐标组合成顶点列表并转换为整数类型
cor_xy = np.hstack((x_cor.reshape(-1, 1), y_cor.reshape(-1, 1)))
polygon_points = np.int32([cor_xy])
# 使用cv2.fillPoly函数填充多边形区域,生成mask。
cv2.fillPoly(image_mask, polygon_points, color=255)
```
以上代码示例中需要根据实际情况填写图像的尺寸(即`height`和`width`),同时注意将顶点坐标列表转换为OpenCV可以接受的数据格式。这样就可以生成一个只有0和1表示的有效区域mask,其中值为255的位置代表有效区域。