图片格式矢量转栅格

来源:互联网 发布:歼31是不是下马了知乎 编辑:程序博客网 时间:2024/05/18 16:13

最近遇到一个问题,需要将一串点描述的一个封闭的面转成栅格图片。这在遥感中非常常见,python中也有非常方便的库GDAL,包含了此功能的丰富模块。但显然对于只完成这个小任务有点小题大作。
好在opencv也有非常好用的函数,可以直接完成转换。使用cv2.fillPoly 和 cv2.fillConvexPoly这两个函数就好了。可以参考这个blog或者直接看opencv的帮助文档。

代码

'''将MScoco数据集中的人体轮廓标注,转成栅格图片rasterMSCOCO也自带maskAnno掩膜标注数据,我没有看里面的内容,但是感觉应该也仅仅是坐标而已,以为这是最省存储空间的'''import cv2def get_mask(data, anns):    height, widht = 0, 0    try:        height, widht, _ = data.shape    except Exception as e:        print(e)    img = np.zeros((height, widht))    polygons = []    for ann in anns:        if 'segmentation' in ann:            if type(ann['segmentation']) == list:                # polygon                for seg in ann['segmentation']:                    poly = np.array(seg).reshape((int(len(seg) / 2), 2))                    polygons.append(poly.astype('int32'))    cv2.fillPoly(img, polygons, 1)    return img

opencv有些函数不太熟悉,花了些时间才找到,不过更麻烦的是

怎么在python3中使用opencv,import cv2

幸好只是编译麻烦一些,操作非常简单,看这篇blog