数字旗手

电气化、自动化、数字化、智能化、智慧化

0%

本文是对《wxPython in Action》一书的第6.1节和第12.2节的翻译理解。 ImagePy很多的组件都用到了wxPython的设备上下文进行绘制,比如histogram panel、curve panel、colormap panel和Canvas等。可以说,对于wxPython不提供的组件,ImagePy都通过DC绘制进行了自己开发,因此这一部分对于理解ImagePy的UI交互会很有帮助。 wxPython设备上下文 为了能在屏幕上绘图,需要使用wxPython的称为设备上下文Device Context的对象,它能对显示设备进行抽象,给予每个设备一套通用的绘图方法,这样一
Read more »

看到一篇非常好的讲解Python星号变量的用法,特转载之。 来自:晴刃(QingSword.COM) 原文连接:http://www.qingsword.com/qing/python-12.html 引言 在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法”在变量前添加单个星号或两个星号”,实现多参数的传入或变量的拆解,本文将详细介绍”星号参数”的用法。 0×1.什么是星号变量 最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的b位置上将其转化成元组,而双星号代表这个位置接收任意多个关键字参数,在*b位置上
Read more »

参考文献: Python 的 import 机制 Python 相对导入与绝对导入 python: __main__ is not a package Python import的搜索路径 import的搜索路径为: 1. 搜索「内置模块」(built-in module) 2. 搜索 sys.path 中的路径 而sys.path在初始化时,又会按照顺序添加以下路径: 1. foo.py 所在目录(如果是软链接,那么是真正的 foo.py 所在目录)或当前目录; 2. 环境变量 PYTHONPATH中列出的目录(类似环境变量 PATH,由用户定义,默认为空); 3. sit
Read more »

参考文献: ImagePy开发文档 —— 工具 Tool 插件 Filter、Simple 都可以处理图像,但有时候我们需要用鼠标交互对图像进行一些操作。比如我们的选区操作,绘图操作等。ImagePlus 被绘制在一个 Canvas 上,Canvas 是 wxpython 的 Panel 子类,当然我们可以对其添加鼠标事件,但我们并不推荐这样做,原因之一是这样做比较繁琐,其次,多工具同时注册事件,会引起管理混乱和事件冲突。(语出上面的参考文献) 这一篇来解析一下Tool引擎,先分析一下这个基类,然后通过基于它编写的画笔工具深入理解。 注意,Tool引擎与前面的Free、Filter等交互逻辑
Read more »

参考文献: Filter 插件 ImagePy开发文档 —— 滤波器引擎 Filter引擎是最重要的一类插件,用于对二维图像进行滤波,也是图像处理中最基础、最普遍的一类应用(语出上面的参考文献)。 这一篇分析Filter引擎的功能,并通过基于它所编写的图像取反插件来深入理解。 Filter引擎 Filter引擎的基本类结构如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Filter: title = 'Filter' modal = True note = [] para, vie
Read more »

%%%%% 更新日志 %%%%% 2019-10-11更新:增加ImageManager管理器解析 %%%%%%%%%%%%%%%%%%%% 参考文献: 创建图像 ImagePy开发文档 —— 常用汇总 ImagePy开发文档 —— 图像封装类 新建图像的插件 最简单的新建图像的插件代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from imagepy.core.engine import Free from imagepy import IPy import numpy as np class Plugin(Free): title = 'N
Read more »

%%%%%%%%%%%% 更新日志 %%%%%%%%%%%%% 2019-10-13 更新:修正之前关于自定义控件的Bind()函数的解释、增加对GUI界面绘制的理解 2019-10-4 更新:增加参数对话框ParaDiglog部分的解析 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 参考文献: Demo Plugin ImagePy开发文档 —— 自由引擎 这一篇解析ImagePy的插件的编写规则、运行机理。 ImagePy的自由引擎Free engine解析 在第一篇解析中已提到,ImagePy提前定义了多种引擎,来作为插件的基类,如Filter类作为滤波器基类。这里
Read more »

序言: 本文的成文与ImagePy没有直接关系,但有相当大的间接关系。起因是我在自己的程序中想集成一个可以自由缩放且绘点的画布工具,发现ImagePy的canvas能够很好地满足需求,但无奈ImagePy的源码看不懂,自己想抽离这个canvas也没抽离出来。后经霄龙提醒,发现wxPython的FloatCanvas也有这些基本功能,所以就有了对FloatCanvas和wxPython GDI绘图进行学习的本文。 更让人欣喜的是,在我弄懂了FloatCanvas的用法、且实现一个基础demo之际,霄龙将ImagePy中的canvas迅速剥离了出来,可以单独调用,同时提供了掩膜模式,可以更好地进行
Read more »

参考文献: 多线程threading wxPython Recipes: A Problem - Solution Approach 本篇是对上面这两个参考文章的摘抄学习,第一篇博客介绍了Python怎样多线程编程,第二个是本书,介绍了wxPython怎样多线程编程,实际是在Python多线程编程的基础上开展的。 ImagePy也是这样的多线程编程思路,所以本篇可以作为理解ImagePy的辅助材料。 Python多线程threading 在Python3中,通过threading模块提供线程的功能。原来的thread模块已废弃。但是threading模块中有个Thread类(大写的T,类名
Read more »

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 更新日志: 2019-9-30 更新: 增加了ImageJ和ImagePy两种UI加载方式的对比 以下为正文 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ImagePy的主界面就是名为ImagePy的类,这一部分详解主界面是如何渲染出来的。 父类初始化 ImagePy这个类是继承自wxPython的Frame类,所以首先对这个类进行初始化,包括名称、尺寸、位置、样式等。 1 2 3 wx.Frame.__init__ ( self, parent, id = wx.ID_ANY,
Read more »