自己代码如下
def create_sample():
# 训练标签数据csv转图片
train_mask = pd.read_csv(TRAIN_MASK_DIR+"/train_mask.csv", sep='\t', names=['name', 'mask'])
for name,mask in train_mask.values:
if(pd.isnull(mask)):
continue;
mask = rle_decode(mask)
cv2.imshow("test",mask)
cv2.imwrite(TRAIN_MASK_DIR+'/'+name.rsplit(".",maxsplit=1)[0]+"_mask.jpg", mask)
break;
cv2.imshow()
这个图片展示我换成了就可以正常显示了
plt.axis('off')
plt.imshow(mask,cmap="gray")
cv2.imwrite()
cv2.imwrite(TRAIN_MASK_DIR+'/'+name.rsplit(".",maxsplit=1)[0]+"_mask.jpg", mask)
改成把mask也就是ndarray存储的图片*255,像素还原嘛。就可以正常保存图片了
cv2.imwrite(TRAIN_MASK_DIR+'/'+name.rsplit(".",maxsplit=1)[0]+"_mask.jpg", mask*255)
综合起来的代码如下啦
这里去了break试试批量处理。plt也可以保存图片但是速度太慢了,比不cv2
def create_sample():
# 训练标签数据csv转图片
train_mask = pd.read_csv(TRAIN_MASK_DIR+"/train_mask.csv", sep='\t', names=['name', 'mask'])
for name,mask in train_mask.values:
if(pd.isnull(mask)):
continue;
mask = rle_decode(mask)
print(type)
plt.imshow(mask,cmap="gray")
plt.axis('off')
cv2.imwrite(TRAIN_MASK_DIR+'/'+name.rsplit(".",maxsplit=1)[0]+"_mask.jpg", mask*255)
break;