数字旗手

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

0%

%%%%%%%%%%%% 更新日志 %%%%%%%%%%%%% 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 »

参考资料: Windows下配置多个git账号的SSH Key Git的多账号如何处理? 同一台电脑配置多个git账号 有以下两种场景需要进行区分。 多个账号+同一邮箱 对于 Git 而言,邮箱是识别用户的唯一手段。因此如果在不同的代码托管服务商(GitHub、GitLab或Bitbucket)中使用同一邮箱作为账号,此时不需要担心密钥的问题,因为这些网站push pull 认证的唯一性是邮箱。此时只需生成一个通用的私钥和公钥对即可: 1 ssh-keygen -t rsa -C "simba@gmail.com" 此时会在用户目录的.ssh/ 下生成两个文件,id_rsa 是私
Read more »

这一部分详解ImagePy的工具条是如何加载的。 构建工具条入口 通过build_tools这个函数来构建工具条: 1 self.toolbar = toolsloader.build_tools(self, 'tools', 'plugins', None, True) 这几个实参所对应的该函数的形参依次为:tools传入toolpath, plugins传入extends(这个参数目前看没有用处),None传入bar,True赋给report。 下面详细看这个函数做了什么。 递归获得所有工具的类文件和图标文件 上面的build_tools函数又会调用loader的build_
Read more »

在第一部分中已经介绍,ImagePy的插件就是文件,这一篇详细解析ImagePy怎样解析物理文件,然后将其加载到菜单栏中。 主界面构建菜单 首先在主界面中根据路径添加菜单项(插件就是菜单),即逐层遍历’menus’路径下的文件夹和文件,找到特定后缀的文件(比如后缀为”plgs.py”),并添加为菜单项。这是整个插件加载的入口函数。 1 2 3 self.menubar = pluginloader.buildMenuBarByPath(self, 'menus', 'plugins', None, True) self.SetMenuBar( self.menubar ) 下面详
Read more »

Prerequisites Linux系统还是建议选Ubuntu系的,首先是驱动支持得全面,再者是Ubuntu源很给力,安装软件不费劲。 这里选择的Linux发行版是Linux Mint 19,它也是Ubuntu系的,界面比原生的Ubuntu要舒服,且软件源也是用的Ubuntu的。 安装Nvidia GPU驱动 首先确认系统是否有Nvidia GPU驱动: 1 nvidia-smi 如果显示没有驱动的话,则需要下载安装驱动,可以有多种方式安装,最简单的一种是通过Ubuntu或Linux Mint的Driver Manager。打开该管理器,等待更新缓存后,就会有可用的Nvidia驱
Read more »

==== 2019.7.20 更新:增加docker走代理 ==== docker也是不走.bashrc中配置的代理,需要走自己的配置文件,修改/etc/default/docker文件,增加: 1 2 HTTP_PROXY="http://[proxy-addr]:[proxy-port]/" HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/" 然后重启docker服务。 参考见: Docker网络代理设置 ==== 2019.7.2更新:增加apt走代理 === Linux系统下经过下面的设置后,pip可以正常联网,但apt仍然无法
Read more »

在学习OpenCV的分水岭算法时,找到Xuhui Zhao小朋友的一篇总结文章,把分水岭算法所需要的预处理和背景知识都讲解得非常透彻细致,特向他申请了转载权限,致谢~ 原文链接在这里。 =============================================================================== 二值图像距离变换 图像距离变换是二值化图像处理与操作中的常用手段, 其主要思想是通过标识空间点(目标点与背景点)距离,将二值化图像转换为灰度图像。 可用于骨架提取、图像窄化等等。它的结果是得到一张与输入影像类似的灰度图像, 但是灰度值只出现在前景区域
Read more »