常用的python库-安装与使用

常用的python库函数

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

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的使用

  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中带有该类别标签的像素将在评估里被忽略,用于语义和全景分割任务。

faiss库-聚类

Faiss库的使用:

  1. faiss索引包括:IndexFlatL2(小规模数据集)、IndexIVFFlat(大规模数据集)、IndexHNSW(高维数据)。
  2. 查询相似度 D, I = index.search(features, k)。对每个样本,查询与其他样本的相似度,D是距离矩阵,I是索引矩阵,返回每个样本的前k个最近邻。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Word成功接入DeepSeek详细步骤

原理 原理是利用Word的VBA宏,写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key,有一些免费的额度可以使用。大概就是这个公司提供token,我们使用这个公司的模型调用deepsee…

【Ubuntu VScode Remote SSH 问题解决】Resolver error: Error: XHR failed

1. 问题描述 VScode使用remote ssh 远程服务器,报错类似: [12:06:01.219] Downloading VS Code server locally... [12:06:01.310] Resolver error: Error: XHR failedat k.onerror (vscode-file://vscode-app/private/var/folders/g1/cvs2rnpx60qc3b4…

系统思考—双环学习

前几天,一个企业高管向我提到:“我们调整了N次方案,市场策略、团队激励、管理制度,能改的全改了,怎么还是不见起色?” 这让我想到典型的单环学习,简单来说就是:发现问题 → 采取行动…

2.11寒假

今天复习了深搜和广搜然后做了作业中的一个题目。 解析&#xff1a;外层 for 循环&#xff1a;for (int i 1; i < n; i)&#xff0c;循环变量 i 从 1 递增到 n&#xff0c;表示要依次将数字 1 到 n 分配到数组 a 中。内层 for 循环&#xff1a;for (int j 1; j < 2; j)…

使用 AlexNet 实现图片分类 | PyTorch 深度学习实战

前一篇文章&#xff0c;CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 使用 AlexNet 实现图片分类…

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

python自动化测试之Pytest框架之YAML详解以及Parametrize数据驱动!

一、YAML详解 YAML是一种数据类型&#xff0c;它能够和JSON数据相互转化&#xff0c;它本身也是有很多数据类型可以满足我们接口 的参数类型&#xff0c;扩展名可以是.yml或.yaml 作用&#xff1a; 1.全局配置文件 基础路径&#xff0c;数据库信息&#xff0c;账号信息&…

SQLMesh系列教程-2:SQLMesh入门项目实战(上篇)

假设你已经了解SQLMesh是什么&#xff0c;以及其他应用场景。如果没有&#xff0c;我建议你先阅读《SQLMesh系列教程-1&#xff1a;数据工程师的高效利器-SQLMesh》。 在本文中&#xff0c;我们将完成一个小项目或教程&#xff0c;以帮助你开始使用SQLMesh。你可以选择一步一步…

人工智能与低代码如何重新定义企业数字化转型?

引言&#xff1a;数字化转型的挑战与机遇 在全球化和信息化的浪潮中&#xff0c;数字化转型已经成为企业保持竞争力和创新能力的必经之路。然而&#xff0c;尽管“数字化”听上去是一个充满未来感的词汇&#xff0c;落地的过程却往往充满困难。 首先&#xff0c;传统开发方式…

使用云效解决docker官方镜像拉取不到的问题

目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了&#xff0c;流水线挂掉的问题&#xff0c;看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…

R语言LCMM多维度潜在类别模型流行病学研究:LCA、MM方法分析纵向数据

全文代码数据&#xff1a;https://tecdat.cn/?p39710 在数据分析领域&#xff0c;当我们面对一组数据时&#xff0c;通常会有已知的分组情况&#xff0c;比如不同的治疗组、性别组或种族组等&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 然而&#xff0c;…

java项目之基于用户兴趣的影视推荐系统设计与实现源码(ssm+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的基于用户兴趣的影视推荐系统设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于用户…

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 0基础…

vue2 多页面pdf预览

使用pdfjs-dist预览pdf&#xff0c;实现预加载&#xff0c;滚动条翻页。pdfjs的版本很重要&#xff0c;换了好多版本&#xff0c;终于有一个能用的 node 20.18.1 "pdfjs-dist": "^2.2.228", vue页面代码如下 <template><div v-loading"loa…

堆排序

目录 堆排序&#xff08;不稳定&#xff09;&#xff1a; 代码实现&#xff1a; 思路分析&#xff1a; 总结&#xff1a; 堆排序&#xff08;不稳定&#xff09;&#xff1a; 如果想要一段数据从小到大进行排序&#xff0c;则要先建立大根堆&#xff0c;因为这样每次堆顶上都能…

【C++】多态原理剖析

目录 1.虚表指针与虚表 2.多态原理剖析 1.虚表指针与虚表 &#x1f36a;类的大小计算规则 一个类的大小&#xff0c;实际就是该类中成员变量之和&#xff0c;需要注意内存对齐空类&#xff1a;编译器给空类一个字节来唯一标识这个类的对象 对于下面的Base类&#xff0c;它的…

【Git】完美解决git push报错403

remote: Permission to xx.git denied to xx. fatal: unable to access https://github.com/xx/xx.git/: The requested URL returned error: 403出现这个就是因为你的&#xff08;personal access tokens &#xff09;PAT过期了 删掉旧的token 生成一个新的 mac系统 在mac的…

初窥强大,AI识别技术实现图像转文字(OCR技术)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作&#xff0c;主要擅长领域有&#xff1a;python…

黑马Redis详细笔记(实战篇---短信登录)

目录 一.短信登录 1.1 导入项目 1.2 Session 实现短信登录 1.3 集群的 Session 共享问题 1.4 基于 Redis 实现共享 Session 登录 一.短信登录 1.1 导入项目 数据库准备 -- 创建用户表 CREATE TABLE user (id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,phone …

逻辑回归不能解决非线性问题,而svm可以解决

逻辑回归和支持向量机&#xff08;SVM&#xff09;是两种常用的分类算法&#xff0c;它们在处理数据时有一些不同的特点&#xff0c;特别是在面对非线性问题时。 1. 逻辑回归 逻辑回归本质上是一个线性分类模型。它的目的是寻找一个最适合数据的直线&#xff08;或超平面&…