python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python库安装与使用

python库安装与使用示例详解

作者:战斗的咸鱼

这篇文章主要介绍了Python中的生成器函数yield、openslide库、ASAP库、concurrent.futures.ThreadPoolExecutor、xml.etree.ElementTree库、skimage库和PIL.Image库的相关知识,感兴趣的朋友一起看看吧

yield关键字

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

openslide库

openslide库的安装-linux

很多虚拟环境都需要额外装openslide库,所以记录一下过程:

cd /home/liusn/00apps
conda activate 环境名
pip install openslide_bin-4.0.0.5-py3-none-manylinux_2_27_x86_64.whl
pip install openslide-python==1.3.1

openslide的使用

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对象的常用属性

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)的安装步骤:

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库

数据增强

MaskFormerSemanticDatasetMapper类:

MetadataCatalog类常见属性

faiss库-聚类

Faiss库的使用:

到此这篇关于python库-安装与使用的文章就介绍到这了,更多相关python库安装与使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文