python實現根據給定座標點生成多邊形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轉化格式,這兩步都放在上述標紅代碼中完成了。不然很容易報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章