Mil代码编程的基本概述

Posted Thomas会写字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mil代码编程的基本概述相关的知识,希望对你有一定的参考价值。

一、概述

Mil代码有自己的一套逻辑:App-->Sys-->Func-->Free,共四个模块,其中每一个模块都是有自己的唯一MI_ID来表示自己的资源。

Mil资源调用基本原则是谁调用谁释放,先创建后释放

  • 谁调用谁释放:每个模块都有自己的ID专用释放函数,由自己负责释放比如MilApp 有MAppFree,MilSys有MilSysFree。

  • 先创建后释放:就是说资源的释放是有顺序的,先创建的资源后释放,后创建的资源先释放。

在新版本的 Mil 中,针对C++开发环境增加了一个新特性,可以不用释放。

在旧版Mil开发时是 MIL_ID abc; Alloc(& abc); Free(abc);这个套路。

在新版Mil开发时发现了新的讨论:MIL_UNIQUE_XXX_ID abc; Alloc(& abc);,这里XXX可以是APP,CAL等等。重点是不用释放。

Mil的资源可以分成3类:App、System、Function。

  • App:通常来说一个进程使用一个MilAppID,这个ID是进程内全局的资源容器。
  • System:是App容器下的一个组件,按照采集方式来分配。一个App下可以有多个Sys,不同Sys是根据图像的采集方式来区分的:比如Host、GigE、Mil不同采集卡等等。当系统中需要初始化多个Sys时需要注意,我们老大说不同Sys之间的bufCopy会比同一个Sys下来的慢,所以在最初系统设计时这些都要考虑清楚。
  • Function:是Sys容器下的一个组件,是指Mil的函数类,比如Cal、Mod、Edge、Blob等等。每一个Sys下可以有多个函数ID,并没有数量限制。

二、基本配置

在Mil初次安装时需要把可能用到的模块一次性装全,否则后期拓展只能卸载当前Mil环境重新装过。而且Mil的卸载并不干净,可能导致下次的安装需要,这时需要在卸载后运行MilClear来清理下,然后再次安装就不会有问题了。

Mil的配置,默认的就可以,不用做任何修改。但两个地方需要注意:General下DefaultValues中的SystemType,看看默认的对不对。还有一个就是Updates,如果需要更新的话可以在这里填写相关信息后更新新版本的Mil,但是高血压、暴脾气的就算了,因为网速巨慢。。。

如果是新手第一次使用Mil的话,建议从Mil的Example开始看起,CoPilot和工具箱先不要弄,首先熟悉下Mil的基本套路,上手会快一些。

三、Mil函数基本套路

Mil里面 有很多函数,他们的命名都是有规律的,例如MappXXX都是设计MilApp相关的操作,Mblob都是blob相关的操作。Mil将所有的函数都是按照需求列好。

Mapp当前exe中Mil容器的设置
Msys当前的Mil采集系统,host、GigE、其它采集卡等等,通常来说一个方式只用一个Sys就可以。
Mbead一个曲线测量的类
MblobBlob分析
Mbuf图片的读写、复制、创建等
Mcal标定相关
Mcode条码读取相关
Mcol颜色分析相关
Mdig采集相关
Mdisp显示相关
Medge纹理分析,在有些软件里叫做Path,是一个东西
Mgra绘图相关
Mim图像操作相关
Mmeas测量相关
Mmet形态学测量相关
Mmod模板匹配相关
Mocr字符识别
Mpat灰度匹配
Mreg图像拼接
Mstr字符串识别
MthrMil线程

通常来说,每一类函数的套路规律:

  1. Alloc                               分配一个资源ID
  2. AllocResult                   分配资源ID的结果ID,一个资源ID可以绑定多个结果ID
  3. Control                           参数设置
  4. Caculate,Find            计算
  5. Inquire                            查询资源ID的参数设置
  6. GerResult                      获取结果
  7. Draw                               绘制结果
  8. Free                                释放资源ID和结果ID
  9. Save                               保存
  10. Restore                           读取保存的内容

四、Mil的环境配置

Mil的环境配置 -- C++:

  1. VC++ --> 包含目录:MIL\\Include 和 MIL\\Include\\MILDyn
  2. VC++ --> 库目录:MIL\\LIB
  3. 连接器 --> 输入 --> 附加依赖项:库目录下所有文件名

Mil的环境配置 -- C#:

  1. 引用 MIL\\MIL.NET\\Matrox.MatroxImagingLibrary.dll 
  2. using Matrox.MatroxImagingLibrary;

以上是关于Mil代码编程的基本概述的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV编程入门目录

linux socket编程系统调用栈

MapReduce基本原理

Java网络编程-第二节:套接字(Socket)编程基本概述

Java网络编程-第二节:套接字(Socket)编程基本概述

scala基本入门