Tkinter:使用鼠标在画布上缩放图像

问题描述

我正在使用svs格式的图像。我正在使用openslide导入图像。

import openslide as ops

slide = ops.OpenSlide('TUPAC-TR-499.svs')

当我小规模导入时,我得到这张图片

level = 3
slide_low = slide.read_region((0,0),level,slide.level_dimensions[level]

whole slide

当我放大零件时。我使用DeepZoomGenerator做到这一点。

from openslide.deepzoom import DeepZoomGenerator
data_gen = DeepZoomGenerator(slide2,tile_size=1022,overlap=1,limit_bounds=False)

tile_img14 = data_gen.get_tile(14,(0,1))
tile_img14

low_14

我们还可以调整DeepZoomGenerator的参数。

tile_img14 = data_gen.get_tile(13,1))
tile_img14

low_13

要选择特定区域,请使用以下命令:

def getROICoords(densestPatches,patchSize=512):
    coords = []
    for patch in densestPatches:
        coords.append([patch.x*patchSize,patch.y*patchSize])
    return coords

selected_coords = getROICoords(densestPatches,512)[4]
selected_region = slide.read_region((selected_coords[1],selected_coords[0]),(1024,1024))

Region selected

我想在tkinter中使用鼠标和画布自动完成这项工作。

这是我的代码:

        slide = ops.OpenSlide(self.path.get())
        level_high = 1
        level_low = 3
        level = 3
        slide_low = slide.read_region((0,slide.level_dimensions[level])
        pi = ImageTk.PhotoImage(slide_low)
        panelA = tk.Label(self.frame,image=pi)
        panelA.image = pi
        panelA.pack()


            
            self.canvas.create_window((0,window=self.frame,anchor=tk.NW)
            self.canvas.bind_all("<MouseWheel>",self.on_mousewheel)
            self.canvas.config(scrollregion=self.canvas.bbox(tk.ALL))
            self.canvas.grid(row=0,column=0,sticky="nswe")
            self.scroll_x.grid(row=1,sticky="we")
            self.scroll_y.grid(row=0,column=1,sticky="ns")
            self.rowconfigure(0,weight=1)
            self.columnconfigure(0,weight=1)
            self.bind("<Configure>",self.resize)
            
            self.update_idletasks()
            

def on_mousewheel(self,event):
    shift = (event.state & 0x1) != 0
    scroll = -1 if event.delta > 0 else 1
    if shift:
        self.canvas.xview_scroll(scroll,"units")
    else:
        self.canvas.yview_scroll(scroll,"units")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...