常用的python库-安装与使用

常用的python库函数

  • yield关键字
  • openslide库
    • openslide对象的常用属性
  • cv2库
  • numpy库
  • ASAP库-multiresolutionimageinterface库
    • ASAP库的安装
    • ASAP库的使用
  • concurrent.futures.ThreadPoolExecutor
  • xml.etree.ElementTree库
  • skimage库
  • PIL.Image库 PIL.Image.Image
  • detectron2库
    • 数据增强
    • MaskFormerSemanticDatasetMapper类:
    • MetadataCatalog类常见属性

yield关键字

yield关键字:定义生成器函数。
生成器函数:允许在迭代过程中逐步生成值,而不是一次性返回所有值。
yield语句会暂停函数的执行,并返回一个值给调用者。下一次调用生成器的__next()__方法,函数会从暂停的地方继续执行。
生成器函数:节省内存,按需求生成值,而不是一次性将所有值加载到内存中。

openslide库

  1. openslide库是一个读取和操作显微镜图像的python库,支持.svs,.vms和.tiff等格式。
  2. 支持图像金字塔格式:在不同的分辨率下访问图像数据。
  3. 可以从原始图像中提取特定区域,不需要加载整个图像。
  4. 能够访问图像的元数据,如放大倍数、图像尺寸等。
import openslide  
# 打开显微镜图像 
slide = openslide.OpenSlide(wsi_path)  # 获取特定金字塔层级的图像尺寸 
# level从0开始,0表示最高分辨率 
# w, h表示指定层级的图像宽度和高度 
w, h = slide.level_dimensions[level]  # 获取level层的下采样比例 
# 下采样比例: 特定层级的像素大小与最高分辨率像素大小的比例关系 
# 如果下采样比例为(2,2), 图像的宽和高都被缩小为原来的1/2 
factor = slide.level_downsamples[level]  
# 从显微镜图像中读取指定区域 
# location: tuple, 左上角坐标; level: 金字塔层级 
# size: (w, h), 要读取的区域大小; 返回一个PIL对象 
image = slide.read_region(location, level, size)

openslide对象的常用属性

  • self.level_downsamples[level]:获取level层的下采样比例,相对于最高分辨率而言。
  • self.level_dimension[level]:level层的图像尺寸。

cv2库

import cv2  # 在图像上绘制多边形 
# img: 要在其上绘制的图像; pts: 一个包含多边形顶点的ndarray; 
# color: 填充的颜色, (255)表示白色 
cv2.fillPoly(img, pts, color)  # 在图像上绘制文本 
# img: 要绘制文本的图像; text: 要绘制的文本字符串 
cv2.putText(img, text)

numpy库

import numpy as np  
# 找到数组中满足条件的元组索引 
# condition: bool数组, 返回所有为True的行, 列索引 
X_idx, Y_idx = np.where(condition)  # 根据条件condition进行数组的元素选择和替换 
# condition为True时, 返回value1, 否则返回value2 inst_map = np.where(condition, value1, value2)  
# 将数组按行的方向堆叠起来 
# tup: 一个列表/元组, 返回一个新数组(总行数, 列数) 
# 总行数 = 所有输入数组的行数之和 np.vstack(tup)  
selected_x[..., 0:1] # ...表示前面所有的维度

ASAP库-multiresolutionimageinterface库

处理金字塔类型的数据结构。处理多分辨率图像的python库,适合医学图像和显微镜图像的分析。支持不同分辨率的访问与操作。

ASAP库的安装

安装ASAP linux(ubuntu18.04-A6000):https://www.freesion.com/article/4489476959/
安装ASAP linux(ubuntu22.04-4x3090)的安装步骤:

  • 在ASAP官网下载最新版:ASAP 2.2,适配ubuntu2204。
    在这里插入图片描述

  • 安装ASAP的依赖包:用sudo apt-get install 命令。apt-get install是用于命令行操作的软件包管理工具,该命令是安装软件包。

  • 离线安装ASAP的安装包:dpkg -i ASAP-2.2-Ubuntu2204.deb ,手动安装本地的deb文件。

  • 看ASAP安装的位置:dpkg -L asap 。

  • 把ASAP放入PYTHONPATH,然后可以import了。

PYTHONPATH="/opt/ASAP/bin":"${PYTHONPATH}" 
export PYTHONPATH

ASAP库的使用

ASAP库是一个C++写的软件,所以不能读源码。少量的python调用文档见:https://academic.oup.com/gigascience/article/7/6/giy065/5026175

ASAP官网:https://github.com/computationalpathologygroup/ASAP/releases

通过python 访问tif数据:
在这里插入图片描述
将XML注释数据转换为tif图像,假设注释里的多边形坐标是基于图像最高分辨率级别的。
在这里插入图片描述
示例代码:

import multiresolutionimageinterface as mir  # 创建图像接口 
reader = mir.MultiResolutionImageReader()  # 打开和加载多分辨率图像文件 
mr_image = reader.open(path) # 获取level 6的图像尺寸 level=2 
w, h = mr_image.getLevelDimensions(level) 
ds = mr_image.getLevelDownsample(level) # 从level 6获取一个patch, patch左上角的坐标为(0,0), 返回的tile是一个numpy对象 
tile = image.getUCharPatch(0, 0, w, h, 6) # 读取一个 300 像素宽、200 像素高的图像块,从level=2 的 (568, 732) XY 坐标开始 
# ds是下采样倍数, 在level=2的坐标乘以ds, 得到level=0的坐标 
tile = image.getUCharPatch(int(568 * ds), int(732 * ds), 300, 200, level)  
# 存储和管理多分辨率图像相关的注释数据 
annotation_list = mir.AnnotationList() 
# 将注释数据转换以xml格式存储 
xml_repository = mir.XmlRepository(annotation_list) 
# 设置or更新xml文件的源路径 xml_repository.setSource(path) 
# 从xml文件加载数据 xml_repository.load() 
# 将注释数据转换为二值掩码 
annotation_mask = mir.AnnotationToMask() 
# 将提供的注释annotation_list转换为二值掩码 
annotation_mask.convert(annotation_list, output_path,image_dimensions, image_spacing)

concurrent.futures.ThreadPoolExecutor

管理线程池并高效地执行多线程任务,可以加快I/O密集型任务的处理速度。通过提交任务来执行并发操作。

from concurrent.futures import ThreadPoolExecutor  # 创建对象, max_workers指定最大线程数, 如果没有指定, python根据系统的线程数进行调整 
executor = ThreadPoolExecutor(max_workers=3)  # 使用map()提交多个任务 
executor.map(task, range(5))  # 关闭线程池 
executor.shutdown(wait=True)

xml.etree.ElementTree库

解析和创建xml文档,用于读取、修改和生成xml。

import xml.etree.ElementTree as ET  # 从指定文件中读取xml数据, 并解析为一个树结构 ElementTree对象 
tree = ET.parse(annot_path)  # 获取根元素: xml文档最外层的元素 
root = tree.getroot()

skimage库

import skimage  # 生成多边形的像素坐标 
# x: 一维数组, 多边形的列坐标; y: 一维数组, 多边形的行坐标 
# shape: 指定输出坐标的图像形状 
# rows, cols: 多边形内部像素的行和列坐标 
# 多边形内部是指,所有的多边形都被填充好了 
rows, cols = skimage.draw.polygon(x, y, shape)

PIL.Image库 PIL.Image.Image

from PIL import Image  image = Image.open(path)  
# 查看image的mode和channel nums 
print(f"Image mode: {image.mode}") 
print(f"Number of channels: {len(image.getbands())}")  
# 转换mode mask = mask.convert("P")

detectron2库

数据增强

  1. 允许同时增强多种数据类型,如图像、边界框、掩码。
  2. 允许应用一系列静态声明的增强。
  3. 允许添加自定义新数据类型来增强,如旋转边界框、视频剪辑。
  4. 处理和操纵增强增强应用的operations。
    如何在编写新的数据加载器时使用增强,如何编写新的增强。

MaskFormerSemanticDatasetMapper类:

  1. 从file_name读取image
  2. 将几何变换应用到image和annotation
  3. 查找合适的cropping,将其应用于image和annotation
  4. 把image和annotation变成Tensors

MetadataCatalog类常见属性

  1. stuff_classes:每个stuff类别的名称list,用于语义分割和全景分割。
  2. stuff_colors:每个stuff类别的预定义颜色(0-255),用于可视化。如果没有指定,则使用随机颜色。list[tuple(r, g, b)].
  3. ignore_label:int,gt中带有该类别标签的像素将在评估里被忽略,用于语义和全景分割任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15442.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++基础系列【8】如何解决编译器报的错误

博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1f…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<8>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们复习前面学习的指针知识 目录 关于指针数组和数组指针的区别指针数组(Array of Poi…

UE5.5 PCGFrameWork--GPU CustomHLSL

在上一篇UE5.5 PCGFrameWork使用入门-CSDN博客 大致介绍了UE5 PCG框架的基本使用. 本篇探索PCGFrame的高级应用--GPU点云。也就是利用GPU HLSL编程对点云进行操纵,可以大幅度提升点云生成效率。 目前在UE5 PCG框架中,点云GPU的应用大致分为三类: Point…

Games202 Lecture11 LTC | Disney principled BRDF | NPR

Shading with microfacet BRDFs under polygonal lighting -Linearly Transformed Cosines(LTC)Real-Time PBR Materials cont. -Disney principled BRDFNon-photorealistic rendering(NPR) Linearly Transformed Cosines(LTC) lobe花瓣 BRDF的2d形状 基本思路: 任意BRDF变…

Flink 内存模型各部分大小计算公式

Flink 的运行平台 如果 Flink 是运行在 yarn 或者 standalone 模式的话,其实都是运行在 JVM 的基础上的,所以首先 Flink 组件运行所需要给 JVM 本身要耗费的内存大小。无论是 JobManager 或者 TaskManager ,他们 JVM 内存的大小都是一样的&a…

学习数据结构(8)双向链表

1.双向链表的实现 双向链表一般指带头双向循环链表 (1)双向链表的声明 (2)双向链表的打印 (3)向内存申请节点 (4)初始化双向链表 或 (5)尾部插入 &#xf…

【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中,输出层(Output Layer) 的激活函数(Activation Function)直接决定了模型的输出形式,并影响损失函数的选择及训练效果。不同的任务类型(如分类或回归)需要使用不同的激活…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

工业相机在工业生产制造过程中的视觉检测技术应用

随着技术不断发展以及工业4.0时代的到来,利用工业相机进行视觉检测技术已经成为制造业不可或缺的一部分。通过结合先进的计算机视觉、AI算法和自动化设备,工业视觉检测为生产线质量控制和效率提升提供了革命性的解决方案。 一、什么是工业视觉检测技术 …

了解网络层

目录 一、IP协议 二、地址管理 IP地址 概念 作用 格式 网段划分 三、路由选择 网络层要做的事情主要是两个方面: 地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置。路由选择:网络环境比较复杂…

NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)

if-else语句 if语句 if语句的语法形式如下: if ( 表达式 ) 语句;表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 0为假,⾮0表⽰真,也就是…

Json-RPC框架项目(一)

目录 1. 项目介绍: 2. 技术选择; 3. 第三方库介绍; 4. 项目功能; 5. 模块功能; 6. 项目实现: 1. 项目介绍: RPC是远程过程调用, 像调用本地接口一样调用远程接口, 进行完成业务处理, 计算任务等, 一个完整的RPC包括: 序列化协议, 通信协议, 连接复用, 服务注册, 服务发…

Discourse 创建和配置用户自定义字段

用户自定义字段能够让你在用户注册的是要求用户提供更多的信息。这些用户提供的信息可以在用户名片,用户摘要页面下显示,甚至还可以通过 Data Explorer plugin 插件进行查询。 本文能够帮助你对这些字段进行配置和设置。 添加一个用户字段 进入 Admin…

从零到一:我的元宵灯谜小程序诞生记

缘起:一碗汤圆引发的灵感 去年元宵节,我正捧着热腾腾的汤圆刷朋友圈,满屏都是"转发锦鲤求灯谜答案"的动态。看着大家对着手机手忙脚乱地切换浏览器查答案,我突然拍案而起:为什么不做一个能即时猜灯谜的微信…

【C++11】lambda和包装器

1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中,有6个默认成员函数:构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载,最后重要的是前4个,后两个⽤处不⼤,默认成员函数就是我们不写…

Java企业电子招投标系统:Spring Cloud微服务架构-强化企业招采竞争力:电子化招投标平台助力效率与成本控制-支持二次开发

​在当今激烈的市场竞争环境下,企业规模的持续扩大使得招采管理变得日益重要,已成为企业提升核心竞争力的关键一环。为了实现更高效、更高质量的招采成果,我们设计了一套基于电子化平台的解决方案,旨在通过电子化招投标系统&#…

计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

打家劫舍3

今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…

指定路径安装Ollama

通过鼠标双击安装,默认会安装到C盘下,如果需要更换默认路径则可以通过命令的方式将Ollama安装到其他盘的某个目录下。 OllamaSetup.exe /DIR"D:\Ollama" #DIR指定安装路径 执行上述命令后,会弹出OllamaSetup.exe安装窗体界面&…

Linux:库

目录 静态库 动态库 目标文件 ELF文件 ELF形成可执行 ELF可执行加载 ELF加载 全局偏移量表GOT(global offset table) 库是写好的,成熟的,可以复用的代码 现实中每个程序都要依赖很多的基础的底层库,不可能都是从零开始的 库有两种…