(二十)创建滤波算法模块并自动实例化

1.修改探测器图像尺寸

适应板块尺寸大小

  • 查看屏幕尺寸
    image
  • 修改配置参数:可以启动修改,也可以直接改json文件
    改成和板块区域一样大
  • 需要用ps修改,不然会报错,图像尺寸也修改成同样大小
    image

写图像的图片类需要通过配置参数在构造函数中实例化
image
cpp函数也需要修改,用图片实际的宽高遍历
image

启动软件时打开

image

2.创建图像滤波算法处理流程模块

需要在图像处理模块添加一个区域
image

新建图像流程模块

  • 安装包prism.unity,reativeui.wpf,reactiveui.fody,mahapp.metro

  • 生成事件

  • 添加引用
    image

  • 模块配置类
    image

  • process模块要添加引用,要先加载这个模块
    image

  • 布局
    image

  • 添加过滤算法要弹出对话框,但是缺一个扩展方法
    image

  • vm
    image

3.创建滤波算法模型的接口

选择滤波算法弹窗布局

  • ItemTemplate控件模板指的是listbox的外观
  • DataTemplate数据模板指的是SelectedItem的外观
    image
    对应的vm
    image

图像滤波处理算法实体的接口

  • 对应opencv的图像处理函数
    image

创建图像处理滤波模块

  • 安装 prism.unity,reactiveui.wpf,reactiveui.fody,mahapps.metro
  • 生成事件
  • 引用:core log ui share
  • 创建view和对应viewmodel,models和services包
  • 模块配置类
    image
    flow模块依赖与filter模块
    image

FilterModeBase抽象基类实现接口IFilterModel
image
FilterViewModelBase抽象基类,泛型就是算法实体接口
image

4.创建一个Test滤波算法对应C++的一个函数

创建测试实体:
image
vm继承基类,泛型即是上面的测试实体类
image
前台页面显示value的数值
image

5.利用反射和特性实例化滤波算法模型(重点知识)

利用工厂模式,在share中创建接口

image

在filter模块创建特性

AttributeUsage
C# AttributeUsage的使用浅析
image

标注给需要自动实例化的类

image

在service包创建工厂

利用反射和特性实例化模型
Assembly.GetExecutingAssembly
//获取包含当前执行的代码的程序集。
image

Type.IsAssignableFrom(Type)
//确定指定类型 c 的实例是否能分配给当前类型的变量。
image

GetCustomAttribute
//检索应用于程序集、模块、类型成员或方法参数的指定类型的自定义属性。
Activator.CreateInstance
//Activator包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。
//方法 CreateInstance 通过调用与指定参数最匹配的构造函数来创建程序集中定义的类型的实例。 如果未指定参数,则调用不采用任何参数的构造函数,即无参数构造函数。
image

调用

image

但是拿到的应该是这两个,需要做个筛选
image

posted @ 2023-12-29 13:32  huihui不会写代码  阅读(34)  评论(0)    收藏  举报