当前位置: 首页 > wzjs >正文

做网站的学什么百度云下载

做网站的学什么,百度云下载,河北高端网站制作,企业信息查询网官网def ensure_dir(path):"""若目录不存在则创建"""if not os.path.exists(path): #判断路径是否存在os.makedirs(path) #创建路径def read_and_resize(img_path, size):"""读取并缩放图像到指定尺寸,返回 numpy 数组&qu…
def ensure_dir(path):"""若目录不存在则创建"""if not os.path.exists(path): #判断路径是否存在os.makedirs(path) #创建路径def read_and_resize(img_path, size):"""读取并缩放图像到指定尺寸,返回 numpy 数组"""img = Image.open(img_path).convert("RGB") #Image.open 读取图片文件 .convert将数据改为所需的格式img = img.resize(size, Image.BILINEAR) #.resize(size, Image.BILINEAR) 缩放图片的大小 保证格式相同return np.array(img) #np.array 将数据的格式改为数组
#插值(interpolation):缩放图像时需要“估算”新像素值的方法。常见方式有:最近邻 (NEAREST),双线性插值 (BILINEAR),双三次插值 (BICUBIC)def merge_instance_masks(mask_folder, size):"""将一个病例下的所有 instance-mask 合并成一张二值 mask"""final = np.zeros(size[::-1], dtype=np.uint8)  # (H, W) 创建空的掩膜for fname in os.listdir(mask_folder): #os.listdir(...) 遍历文件 读取所有的mask图片if not fname.lower().endswith((".png", ".jpg", ".tif")): #跳过非图片文件 .endswith判断文件格式continuem = Image.open(os.path.join(mask_folder, fname)).convert("L") #.convert 将数据改为单通道数据 黑白图片m = m.resize(size, Image.NEAREST)          # 保持 label 不插值m = np.array(m)m = (m > 0).astype(np.uint8)               # 转成 0/1 二值化 (m > 0)布尔判断 生成一个和m形同形状的数组 并比较比0大的就是1 其他的就是0final = np.maximum(final, m)   #将符合条件的masks合并             # 像素级取最大值return final * 255      #最后输出的值为255\0 方便保存                       # 保存成 0/255def process_one_case(case_dir, out_img_dir, out_mask_dir, size):"""处理单个病例,输出 image.png & mask.png"""# 1. 读取原图(每个 images 文件夹只含一张)img_folder = os.path.join(case_dir, "images")#拼接路径,得到某病例的“images”文件夹路径img_name   = os.listdir(img_folder)[0]img        = read_and_resize(os.path.join(img_folder, img_name), size)# 2. 合并 maskmask_folder = os.path.join(case_dir, "masks")mask        = merge_instance_masks(mask_folder, size)# 3. 生成保存路径case_id = os.path.basename(case_dir)img_out_path  = os.path.join(out_img_dir,  f"{case_id}.png")mask_out_path = os.path.join(out_mask_dir, f"{case_id}.png")# 4. 保存Image.fromarray(img).save(img_out_path)Image.fromarray(mask).save(mask_out_path)def main():ensure_dir(OUT_IMG_DIR)ensure_dir(OUT_MASK_DIR)case_dirs = [os.path.join(SRC_ROOT, d) for d in os.listdir(SRC_ROOT)if os.path.isdir(os.path.join(SRC_ROOT, d))]for c in tqdm(case_dirs, desc="Processing cases"):process_one_case(c, OUT_IMG_DIR, OUT_MASK_DIR, TARGET_SIZE)print(f"✅ 处理完成!{len(case_dirs)} 张图像已保存到 {OUT_IMG_DIR} / {OUT_MASK_DIR}")if __name__ == "__main__":main()

这是比较完整的掩膜合并代码

掩膜(mask), 通俗易懂来说就是对图片中重要内容做的标签,一般的掩膜都是二值型的,背景的像素是0,而掩膜的像素是255。

为什么要进行掩膜合并:模型在处理文件时,一般是一张图片只能对应一个mask,但是有些图片中的特征比较多,需要多个mask标记,这些mask又是单独的文件,所以要将他们合并,方便后面模型处理

掩膜合并的过程简单来说就是:先确认文件的路径存在,再将图片提取出来,将图片的格式通过插值的方法统一格式像素大小方便后面进行处理。提取出mask,进行与图片相同的处理步骤后,通过二值化的方法提取出mask,最后在进行合并。

简洁的二值化掩膜合并代码

def merge_instance_masks(mask_folder, size):final_mask = np.zeros(size[::-1], dtype=np.uint8)for fname in os.listdir(mask_folder):if not fname.endswith('.png'):continuemask = Image.open(os.path.join(mask_folder, fname)).convert('L')mask = mask.resize(size, Image.NEAREST)mask = np.array(mask)mask = (mask > 0).astype(np.uint8)final_mask = np.maximum(final_mask, mask)return final_mask * 255

 

掩膜合并写代码的思路框架

  1. 明确掩膜格式和组织结构

    • 是多张单通道小掩膜文件,还是一张带类别标签的整图?

    • 是灰度图、RGB图还是三维数组(如 .npy, .nii)?

    • 是实例掩膜(每个对象单独一个文件)还是语义掩膜(每个像素分类标签)?

  2. 确定目标掩膜格式

    • 是要把多个实例掩膜合成一张二值掩膜?

    • 还是转换成语义分割标签图?

    • 还是保留多通道结构?(例如多类别多通道)

  3. 选择对应处理方法

    • 对文件夹内的多个二值掩膜做像素级“或”运算(np.maximum)

    • 对语义标签图做像素级直接使用

    • 对多通道数组用数组操作叠加/转换

  4. 写对应的代码模块,保证流程:读掩膜→处理→保存

其他mask类型的掩膜合并代码 

语义分割标签图(单文件,类别标签编码) 

def process_semantic_mask(mask_path, size):mask = Image.open(mask_path)mask = mask.resize(size, Image.NEAREST)mask = np.array(mask)# 假设原始mask是类别编码,如0-background,1-肿瘤,2-器官# 这里直接返回,不合并return mask

多类别掩膜存为多通道 npy 文件,转换为单通道标签图 

def multi_channel_npy_to_label(mask_npy_path, size):mask_3d = np.load(mask_npy_path)  # shape: (C, H, W)mask_3d_resized = np.zeros((mask_3d.shape[0], size[1], size[0]), dtype=np.uint8)for i in range(mask_3d.shape[0]):channel = cv2.resize(mask_3d[i], size, interpolation=cv2.INTER_NEAREST)mask_3d_resized[i] = channel# 逐像素最大类别索引作为标签label_mask = np.argmax(mask_3d_resized, axis=0).astype(np.uint8)return label_mask

掩膜合并中常用的函数方法 

  • Image.open() 读取图片

  • img.resize() 缩放图片

  • np.array() 转成数组

  • np.maximum() 进行掩膜合并

  • Image.fromarray() + .save() 保存图片

  • os.listdir() 遍历目录

  • os.path.join() 拼接路径

http://www.dtcms.com/wzjs/405618.html

相关文章:

  • vc做网站网络营销推广的方式
  • 湖南响应式网站推荐百度竞价排名收费标准
  • 怎么看网站文章的收录免费的网站推广
  • 招聘网站简历数据分析怎么做硬件优化大师
  • 越南做购物网站sem优化服务公司
  • 云阳做网站手机百度ai入口
  • 自己做的网站外国人能访问吗百度app官方下载
  • html5 手机网站模板怎么申请网址
  • 音乐外链生成网站怎么做图片外链上传网站
  • 注册公司注册资金多少为好石家庄自动seo
  • 番禺建设网站公司有效获客的六大渠道
  • wordpress 质感主题厦门百度关键词seo收费
  • 织梦网站有会员系统怎么做长沙百度网站推广公司
  • wordpress 升级提示太原百度seo排名软件
  • 网站做app安全吗百度推广基木鱼
  • 河北省电力建设第二工程公司网站深圳网站seo推广
  • 空间登录入口搜索引擎优化的核心及内容
  • 教育平台网站开发网站怎么提升关键词排名
  • phpcms网站青岛官网seo
  • 提供零基础网站建设教学上海互联网公司排名
  • 为什么做彩票网站会被提示危险品牌广告语
  • 桐城市住房和城乡建设局网站佛山seo外包平台
  • 社交网站第一步怎么做如何制作公司网页
  • wordpress 标签别名seo的作用
  • 做网站视频seo网站内容优化有哪些
  • 承德网站查域名网站
  • 网站跳出率的衡量标准成都seo优化
  • 律所网站建设建议成都网站seo性价比高
  • 长治在百度做个网站多少钱百度平台官网
  • 做网站要学什么软件电商网课