您的位置:首页 > 运维架构

图片格式矢量转栅格

2017-12-20 10:52 399 查看
最近遇到一个问题,需要将一串点描述的一个封闭的面转成栅格图片。这在遥感中非常常见,python中也有非常方便的库GDAL,包含了此功能的丰富模块。但显然对于只完成这个小任务有点小题大作。

好在opencv也有非常好用的函数,可以直接完成转换。使用cv2.fillPoly 和 cv2.fillConvexPoly这两个函数就好了。可以参考这个blog或者直接看opencv的帮助文档

代码

'''
将MScoco数据集中的人体轮廓标注,转成栅格图片raster
MSCOCO也自带maskAnno掩膜标注数据,我没有看里面的内容,但是感觉应该也仅仅是坐标而已,以为这是最省存储空间的
'''
import cv2
def 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息