ImagePy——UI界面支持开放插件的Python开源图像处理框架

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

菜单打开:process -> region analysis -> geometry analysis count,计算面积并分析参数。通过选择 cov 选项,ImagePy 使用通过协方差计算的椭圆拟合每个区域。这里计算前面步骤中所示的参数,如面积、周长、离心率和稳定性。事实上,前一步的滤波正是对这一步的准备。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

几何分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

生成结果表(背景是黑色,以强调椭圆)

按区域对表进行排序

菜单打开:table -> statistic -> table sort by key

选择主键作为区域,并选择 descend,表将按面积的降序排序。表是除了图像之外的另一项重要数据。从某种意义上来说,很多时候我们需要获得图像的相关信息,然后以表的形式对数据进行后续处理。ImagePy 支持表 I/O(xls、xlsx、csv)、过滤、切片、统计分析、排序等等(右键单击列标题来设置文本颜色、小数精度、行样式等)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图表

菜单打开:table -> chart -> hist chart

我们经常需要利用表格数据来绘制一个图表。这里,我们绘制了某个区域和其周边列的直方图。ImagePy 的表可以用于绘制常见的图表,如柱状图、饼图、直方图和散点图(基于 matplotlib)。该图表带有缩放、移动和其他功能,并可以保存为图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

直方图

3D 表格

菜单打开:kit3d -> viewer 3d -> 2d surface

图像的表面重建。这幅图像显示了三种方式的重建结果,包括:sobel 梯度图、高阈值和低阈值。它显示了 Up And Down Watershed 是如何工作的:

  • 计算梯度;
  • 通过高低阈值标记硬币和背景;
  • 在 dem 图表上模拟上升 water 来形成分割线。

ImagePy 可以完成图像的 3d 滤波、3d 轮廓构建、3d 拓扑分析、2d 表面重建和 3d 表面可视化。3d 视图可以被自由拖动、旋转,其结果可以保存为.stl 文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3d 可视化

宏记录和执行

菜单打开:window -> develop tool suite

宏记录器显示在开发工具面板中。我们已经手动完成了一个图像的分割。然而,用这种方式一下子处理超过 10 幅图像是非常乏味的。因此,假设在处理这些问题的时候,这些步骤具有高度的可重复性和健壮性,我们可以记录一个宏,以便将几个处理过程组合成一个单击程序。宏记录器与无线电记录器相似。打开后,它将记录操作的每个步骤。我们可以点击暂停按钮停止录制,也可以点击播放按钮开始录制。当宏运行时,所记录的命令将按照顺序执行,因此它具有简单性和可再现性。

宏被保存到 .mc 文件中。将文件拖放到 ImagePy 底部的状态栏中,宏将自动执行。我们还可以将 .mc 文件复制到 ImagePy 文件目录下的菜单的子菜单中。当启动 ImagePy 时,宏文件将被解析为相应位置的菜单项。通过单击菜单,宏将被执行。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

宏记录

Workflow

宏是一系列预定义的命令。通过将一系列固定操作记录到宏中,可以提高工作效率。然而,宏缺乏灵活性。例如,有时主要步骤是固定的,但是参数调优需要人工参与。在这种情况下,workflow 就可以解决这个问题。ImagePy 中的 workflow 是可视化的流程图,分为两个层次:章节和部分。本章对应于 workflow 中的矩形区域,并且该部分是矩形区域中的按钮,也是命令,并附有图形说明。右边的消息窗口将显示相应的功能描述,同时鼠标悬停在上面。单击右上角的“详细文档”,查看整个过程的说明文档。

workflow 实际上是用 MarkDown(一种标记语言)编写的,但是在编写时你需要遵守以下规范:

Title=====

## Chapter1

  1. Section1some coment for section1 …

## Chapter 2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

workflow

滤波器插件

在最后一节中,我们介绍了宏和 workflow,使用宏和 workflow 连接现有功能很方便。但有时我们需要创建新的特性。在本节中,我们将尝试向 ImagePy 添加一个新特性。ImagePy 可以轻松访问任何基于 numpy 的函数。让我们以 scikit-image 的 canny 操作符为例。

示例代码如下:

from skimage import feature

from imagepy.core.engine import Filter

class Plugin( Filter ):

title = ‘Canny’

note = [ ‘all’ , ‘auto_msk’ , ‘auto_snap’ , ‘preview’ ]

para = { ‘sigma’ : 1.0 , ‘low_threshold’ : 10 , ‘high_threshold’ : 20 }

view = [ ( float , ‘sigma’ , ( 0 , 10 ) , 1 , ‘sigma’ , ‘pix’ ) ,

( ‘slide’ , ‘low_threshold’ , ( 0, 50 ) , 4 , ‘low_threshold’ ) ,

(‘slide’ , ‘high_threshold’ , ( 0 , 50 ) , 4 , ‘high_threshold’ ) ]

def run ( self , ips , snap , img , para = None ) :

return feature.canny (snap , para[ ‘sigma’ ] , para[ ‘low_threshold’ ] ,

para[ ‘high_threshold’ ] , mask = ips.get_msk ) * 255

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Canny 滤波器示例

创建自己的滤波器的步骤:

  1. 导入对应的库,通常是第三方库。
  2. 继承 filter 类。
  3. 标题将用作菜单的名称和参数对话框的标题,也用作宏记录的命令。
  4. 在 note 中告诉框架它需要为你做什么,是否进行类型检查、是否支持选择、是否支持 UNDO 等等。
  5. para 是一个参数字典,包含函数所需的参数。
  6. 为视图中的每个参数定义交互方法,框架将通过读取这些信息自动生成用于参数调优的对话框。
  7. 编写主函数 run。img 是当前图像,para 是用户的输入参数。如果在 note 中设置了 auto_snap,snap 将是 img 的一个副本。我们可以处理这个副本,将结果存储在 img 中。如果函数不支持指定的输出,我们还可以返回结果,框架将帮助我们将结果复制到 img 并显示它。
  8. 将文件保存为 xxx_plg.py,然后复制到菜单文件夹,重新启动 ImagePy。它将被作为菜单项加载。

这个框架为我们做了什么?

该框架以正式的方式把复杂的任务融合在一起,并帮助我们执行了:

  • 类型检查。如果当前图像类型不满足注释中的要求,则终止分析;
  • 根据参数,自动生成对话框以并检测输入的合法性;
  • 实时预览;
  • 自动 ROI 支持;
  • 撤消支持;
  • 并行化支持;
  • 图像堆栈支持;
  • 其它。

如前所述,表是除了图像之外的另一种非常重要的数据类型。类似地,ImagePy 也支持表的扩展。这里我们给出在前面描述中使用的按键排序的示例。

代码为:

from imagepy.core.engine import Table

import pandas as pd

class Plugin( Table ) :

title = ‘Table Sort By Key’

para = { ‘major’:None , ‘minor’ : None , ‘descend’ : False }

view = [ ( ‘field’ , ‘major’ , ‘major’ , ‘key’ ) ,

( ‘field’ , ‘minor’ , ‘minor’ , ‘key’ ) ,

( bool , ‘descend’ , ‘descend’ ) ]

def run( self , tps , data , snap , para = None ) :

by = [ para[ ‘major’ ] , para[ ‘minor’ ] ]

data.sort_values( by = [ i for i in by if i ! = ‘None’ ],

axis = 0 , ascending = not para[ ‘descend’ ] , inplace = True )

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-3pAHm4s8-1713675530156)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值