maskrcnn训练自己的数据集——labelme生成Mask文件,opencv将16位灰度图片转化为8位(python代码)

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
# author:"hy"
"""使用skimage模块读取图片,不改变图片数据类型uint16,保存为uint8类型"""
import os
import cv2
import natsort
import numpy as np
from skimage import io
from matplotlib import pylab as plt
input_file = "C:/Users/lsh/Desktop/data/label_json/"  #文件路径
out_file = "C:/Users/lsh/Desktop/data/cv2_mask"
img_type = ".png"

for root, dirs, files in os.walk(input_file,topdown=True):
    for name in natsort.natsorted(dirs):  #natsort,自然排序
        file_name = os.path.join(input_file + name,"label_viz" + img_type)
        img = io.imread(file_name)  #Todo:使用skimage模块读取图片不会改变图片的数据格式
        # img = np.array(plt.imread(file_name)) #TODO:不要使用plt.imread读取图片,因为会改变图片的数据格式,uint16读入后会变成float32
        # print(img.shape)
        # io.imshow(img)
        # io.show()
        # plt.imshow(img * 10000) #Todo:img乘以10000是因为uint16位是 0--65531,在MATLAB直接显示时为黑色;标签是1-6
        # plt.axis('off')
        # plt.show()
        print(img.dtype)
        img = img.astype(np.uint8)
        print(img.dtype)
        name2 = name.split("_")[0]
        cv2.imwrite(os.path.join(out_file ,name2 + img_type),img)
        # plt.imshow(img * 40) #Todo:img乘以40是因为uint16位是 0--255,在MATLAB直接显示时为黑色 ;标签是1-6
        # plt.axis('off')
        # plt.show()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值