- 读取文件
img_path = 'D:/Server download/test_slide.svs'
result_path = 'D:/result'
slide = openslide.open_slide(img_path)
- 图像原始大小(获得图像原始大小有多种方法,这只是其中一种)
[w,h] = slide.level_dimensions[0]
- 切块方法
各参数及其含义,参考官方说明:
class openslide.deepzoom.DeepZoomGenerator(osr, tile_size=a, overlap=1, limit_bounds=False)
osr – the slide object
tile_size (int) –单个的宽度和高度。为了获得最佳的查看器性能,平铺大小+2*重叠应该是2的幂。
overlap (int) – 要添加到平铺每个内边缘的额外像素数
limit_bounds (bool) – 如果为True,则仅呈现非空幻灯片区域
osr–幻灯片对象
from openslide.deepzoom import DeepZoomGenerator
data_gen = DeepZoomGenerator(slide, tile_size=50, overlap=0, limit_bounds=False)
tile_size可以设成自己想切的图像大小。
overlap表示的是否边缘overlap,引入其他信息
limit_bounds表示的是大图整个边缘可能达不到自己设的长和宽。False,则丢弃边缘图。True,保存
输出总共切图个数和一共有多少个金字塔,
num_w,图像切片宽度个数
num_h, 图像切片长度个数
data_gen.get_tite(level,(row,col)),level范围在data_gen.level_count,最大的为金字塔底层,最小为0。row,范围是(0,num_w)。col,范围是(0,num_h).还有其他的API切图,可以看官方文档。
也可以自己实现,不调用API.
num_w = int(np.floor(w/width))+1
num_h = int(np