欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python庫安裝與使用示例詳解

 更新時間:2025年02月13日 09:41:00   作者:戰(zhàn)斗的咸魚  
這篇文章主要介紹了Python中的生成器函數(shù)yield、openslide庫、ASAP庫、concurrent.futures.ThreadPoolExecutor、xml.etree.ElementTree庫、skimage庫和PIL.Image庫的相關(guān)知識,感興趣的朋友一起看看吧

yield關(guān)鍵字

yield關(guān)鍵字:定義生成器函數(shù)。
生成器函數(shù):允許在迭代過程中逐步生成值,而不是一次性返回所有值。
yield語句會暫停函數(shù)的執(zhí)行,并返回一個值給調(diào)用者。下一次調(diào)用生成器的__next()__方法,函數(shù)會從暫停的地方繼續(xù)執(zhí)行。
生成器函數(shù):節(jié)省內(nèi)存,按需求生成值,而不是一次性將所有值加載到內(nèi)存中。

openslide庫

openslide庫的安裝-linux

很多虛擬環(huán)境都需要額外裝openslide庫,所以記錄一下過程:

cd /home/liusn/00apps
conda activate 環(huán)境名
pip install openslide_bin-4.0.0.5-py3-none-manylinux_2_27_x86_64.whl
pip install openslide-python==1.3.1

openslide的使用

  • openslide庫是一個讀取和操作顯微鏡圖像的python庫,支持.svs,.vms和.tiff等格式。
  • 支持圖像金字塔格式:在不同的分辨率下訪問圖像數(shù)據(jù)。
  • 可以從原始圖像中提取特定區(qū)域,不需要加載整個圖像。
  • 能夠訪問圖像的元數(shù)據(jù),如放大倍數(shù)、圖像尺寸等。
import openslide  
# 打開顯微鏡圖像 
slide = openslide.OpenSlide(wsi_path)  
# 獲取特定金字塔層級的圖像尺寸 
# level從0開始,0表示最高分辨率 
# w, h表示指定層級的圖像寬度和高度 
w, h = slide.level_dimensions[level]  
# 獲取level層的下采樣比例 
# 下采樣比例: 特定層級的像素大小與最高分辨率像素大小的比例關(guān)系 
# 如果下采樣比例為(2,2), 圖像的寬和高都被縮小為原來的1/2 
factor = slide.level_downsamples[level]  
# 從顯微鏡圖像中讀取指定區(qū)域 
# location: tuple, 左上角坐標(biāo); level: 金字塔層級 
# size: (w, h), 要讀取的區(qū)域大小; 返回一個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  
# 找到數(shù)組中滿足條件的元組索引 
# condition: bool數(shù)組, 返回所有為True的行, 列索引 
X_idx, Y_idx = np.where(condition)  
# 根據(jù)條件condition進行數(shù)組的元素選擇和替換 
# condition為True時, 返回value1, 否則返回value2 inst_map = np.where(condition, value1, value2)  
# 將數(shù)組按行的方向堆疊起來 
# tup: 一個列表/元組, 返回一個新數(shù)組(總行數(shù), 列數(shù)) 
# 總行數(shù) = 所有輸入數(shù)組的行數(shù)之和 np.vstack(tup)  
selected_x[..., 0:1] # ...表示前面所有的維度

ASAP庫-multiresolutionimageinterface庫

處理金字塔類型的數(shù)據(jù)結(jié)構(gòu)。處理多分辨率圖像的python庫,適合醫(yī)學(xué)圖像和顯微鏡圖像的分析。支持不同分辨率的訪問與操作。

ASAP庫的安裝

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

  • 在ASAP官網(wǎng)下載最新版: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調(diào)用文檔見:https://academic.oup.com/gigascience/article/7/6/giy065/5026175

ASAP官網(wǎng):https://github.com/computationalpathologygroup/ASAP/releases

通過python 訪問tif數(shù)據(jù):

將XML注釋數(shù)據(jù)轉(zhuǎn)換為tif圖像,假設(shè)注釋里的多邊形坐標(biāo)是基于圖像最高分辨率級別的。

示例代碼:

import multiresolutionimageinterface as mir  
# 創(chuàng)建圖像接口 
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左上角的坐標(biāo)為(0,0), 返回的tile是一個numpy對象 
tile = image.getUCharPatch(0, 0, w, h, 6) 
# 讀取一個 300 像素寬、200 像素高的圖像塊,從level=2 的 (568, 732) XY 坐標(biāo)開始 
# ds是下采樣倍數(shù), 在level=2的坐標(biāo)乘以ds, 得到level=0的坐標(biāo) 
tile = image.getUCharPatch(int(568 * ds), int(732 * ds), 300, 200, level)  
# 存儲和管理多分辨率圖像相關(guān)的注釋數(shù)據(jù) 
annotation_list = mir.AnnotationList() 
# 將注釋數(shù)據(jù)轉(zhuǎn)換以xml格式存儲 
xml_repository = mir.XmlRepository(annotation_list) 
# 設(shè)置or更新xml文件的源路徑 xml_repository.setSource(path) 
# 從xml文件加載數(shù)據(jù) xml_repository.load() 
# 將注釋數(shù)據(jù)轉(zhuǎn)換為二值掩碼 
annotation_mask = mir.AnnotationToMask() 
# 將提供的注釋annotation_list轉(zhuǎn)換為二值掩碼 
annotation_mask.convert(annotation_list, output_path,image_dimensions, image_spacing)

concurrent.futures.ThreadPoolExecutor

管理線程池并高效地執(zhí)行多線程任務(wù),可以加快I/O密集型任務(wù)的處理速度。通過提交任務(wù)來執(zhí)行并發(fā)操作。

from concurrent.futures import ThreadPoolExecutor  
# 創(chuàng)建對象, max_workers指定最大線程數(shù), 如果沒有指定, python根據(jù)系統(tǒng)的線程數(shù)進行調(diào)整 
executor = ThreadPoolExecutor(max_workers=3)  
# 使用map()提交多個任務(wù) 
executor.map(task, range(5))  
# 關(guān)閉線程池 
executor.shutdown(wait=True)

xml.etree.ElementTree庫

解析和創(chuàng)建xml文檔,用于讀取、修改和生成xml。

import xml.etree.ElementTree as ET  
# 從指定文件中讀取xml數(shù)據(jù), 并解析為一個樹結(jié)構(gòu) ElementTree對象 
tree = ET.parse(annot_path)  
# 獲取根元素: xml文檔最外層的元素 
root = tree.getroot()

skimage庫

import skimage  
# 生成多邊形的像素坐標(biāo) 
# x: 一維數(shù)組, 多邊形的列坐標(biāo); y: 一維數(shù)組, 多邊形的行坐標(biāo) 
# shape: 指定輸出坐標(biāo)的圖像形狀 
# rows, cols: 多邊形內(nèi)部像素的行和列坐標(biāo) 
# 多邊形內(nèi)部是指,所有的多邊形都被填充好了 
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())}")  
# 轉(zhuǎn)換mode mask = mask.convert("P")

detectron2庫

數(shù)據(jù)增強

  • 允許同時增強多種數(shù)據(jù)類型,如圖像、邊界框、掩碼。
  • 允許應(yīng)用一系列靜態(tài)聲明的增強。
  • 允許添加自定義新數(shù)據(jù)類型來增強,如旋轉(zhuǎn)邊界框、視頻剪輯。
  • 處理和操縱增強增強應(yīng)用的operations。
    如何在編寫新的數(shù)據(jù)加載器時使用增強,如何編寫新的增強。

MaskFormerSemanticDatasetMapper類:

  • 從file_name讀取image
  • 將幾何變換應(yīng)用到image和annotation
  • 查找合適的cropping,將其應(yīng)用于image和annotation
  • 把image和annotation變成Tensors

MetadataCatalog類常見屬性

  • 從file_name讀取image
  • 將幾何變換應(yīng)用到image和annotation
  • 查找合適的cropping,將其應(yīng)用于image和annotation
  • 把image和annotation變成Tensors

faiss庫-聚類

Faiss庫的使用:

  • faiss索引包括:IndexFlatL2(小規(guī)模數(shù)據(jù)集)、IndexIVFFlat(大規(guī)模數(shù)據(jù)集)、IndexHNSW(高維數(shù)據(jù))。
  • 查詢相似度 D, I = index.search(features, k)。對每個樣本,查詢與其他樣本的相似度,D是距離矩陣,I是索引矩陣,返回每個樣本的前k個最近鄰。

到此這篇關(guān)于python庫-安裝與使用的文章就介紹到這了,更多相關(guān)python庫安裝與使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)的單向循環(huán)鏈表功能示例

    Python實現(xiàn)的單向循環(huán)鏈表功能示例

    這篇文章主要介紹了Python實現(xiàn)的單向循環(huán)鏈表功能,簡單描述了單向循環(huán)鏈表的概念、原理并結(jié)合實例形式分析了Python定義與使用單向循環(huán)鏈表的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • python實現(xiàn)人機對戰(zhàn)的井字棋游戲

    python實現(xiàn)人機對戰(zhàn)的井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)人機對戰(zhàn)的井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Sanic框架安裝與簡單入門示例

    Sanic框架安裝與簡單入門示例

    這篇文章主要介紹了Sanic框架安裝與簡單用法,結(jié)合實例形式簡單分析了Sanic框架的概念、原理、pip命令安裝以及使用方法,需要的朋友可以參考下
    2018-07-07
  • Python中的lstrip()方法使用簡介

    Python中的lstrip()方法使用簡介

    這篇文章主要介紹了Python中的lstrip()方法使用簡介,是Python入門的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • python對指定字符串逆序的6種方法(小結(jié))

    python對指定字符串逆序的6種方法(小結(jié))

    這篇文章主要介紹了python對指定字符串逆序的6種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python調(diào)用ctypes使用C函數(shù)printf的方法

    Python調(diào)用ctypes使用C函數(shù)printf的方法

    這篇文章主要介紹了Python調(diào)用ctypes使用C函數(shù)printf,需要的朋友可以參考下
    2017-08-08
  • 詳解python讀取image

    詳解python讀取image

    這篇文章主要介紹了python讀取image的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python實現(xiàn)顏色空間轉(zhuǎn)換程序(Tkinter)

    python實現(xiàn)顏色空間轉(zhuǎn)換程序(Tkinter)

    這篇文章主要介紹了基于Tkinter利用python實現(xiàn)顏色空間轉(zhuǎn)換程序,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 解決pycharm 遠(yuǎn)程調(diào)試 上傳 helpers 卡住的問題

    解決pycharm 遠(yuǎn)程調(diào)試 上傳 helpers 卡住的問題

    今天小編就為大家分享一篇解決pycharm 遠(yuǎn)程調(diào)試 上傳 helpers 卡住的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python分治法定義與應(yīng)用實例詳解

    Python分治法定義與應(yīng)用實例詳解

    這篇文章主要介紹了Python分治法定義與應(yīng)用,較為詳細(xì)的分析了Python分治法的概念、原理、用途,并結(jié)合實例總結(jié)了Python分治法的各種常見應(yīng)用,需要的朋友可以參考下
    2017-07-07

最新評論