2.MIL开发基础概念和步骤

2023-11-23 12:59
文章标签 基础 步骤 开发 概念 mil

本文主要是介绍2.MIL开发基础概念和步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相对于开源的Open CV来说商业化的MIL开发相对容易,只需要遵循特定的步骤即可以完成自己的开发。但是对于MIL中的一些基础概念还是要理解,不然可能在后面查看函数帮助时会混淆一些概念。

MIL中有五大基本对象(这里的对象和C++的对象不一样额,不过也可以看成一样的,猜想也是一个结构体):Application、System、Display、Digtizer、Buffer。如下图是这5大基本对象的一个简单关系图。


Application

Application指的是你自己开发的一个应用程序,一般应用程序同一时刻只存在一个Application对象。主要用它来提供一个用于控制和执行MIL应用程序的基本环境。

System

System代表为一个包含CPU或GPU、内存或显存和图像控制器的单元分配的一个虚拟访问对象,例如一块Matrox图像板卡,一个电脑主机都可以被分配为一个System。System能够通过加上相机和显示器来采集、保存和显示。每个Application下可以包含多个System,这就好比一台电脑可以插上多块Matrox图像板卡。

Buffer

Buffer对应一块内存,可以对它赋予不同的属性用来对图像作相应处理,如存储、显示、采集、处理,只有赋予了对应的属性的Buffer才能用于对应操作,只赋予了保存属性的Buffer是不能用于显示的。

Digtizer

Digtizer对应相机。它用于相机的采集和相机属性的调整等,和相机有关的操作都是靠它来完成。

Display

Display对应显示器。所有和显示的操作都是靠它来完成。这个在手册中提到了两种Display:一种是MIL内建的用于演示的Display叫Auxiliary Display,它不适用于Windows Desktop,主要用于和Matrox显卡配套使用的Screen,一般用不上,不予讨论;另一种是叫Windowed Display,一种是MIL用于演示的Display,不需要选择要显示的窗口句柄,默认分配的Display对象是此种display,另一种是用户选择要显示的窗口句柄,这个需要你自己选择在哪个windows窗体上显示对应的Buffer图像内容。


值得注意的是:只要你的电脑配置足够好,内存足够大,每一个System下可以包含任意数量的Digtizer、Display和Buffer。但是,在同一时刻用于实际显示的Buffer和Display只能有一个,我的意思是尽管你可以分配多个,但是每一次你只能用一个,要用另一个的话你只需要做一个切换操作,这在后面多Buffer显示中会讲到。

下面我以MIL手册上做一下修改来讲解,下面的源代码(新建一个Win32 Console项目,复制代码到CPP文件中编译即可运行)演示了一个基本的MIL程序开发步骤。

#include <stdio.h>
#include <mil.h>#pragma comment(lib, "mil.lib")int main(int argc, char *argv[])
{MIL_ID	MilApplication,  /* Application identifier.  */MilSystem,       /* System identifier.       */MilDisplay,      /* Display identifier.      */MilImage;        /* Image buffer identifier. *///分配默认的应用MappAllocDefault(M_SETUP, &MilApplication, &MilSystem, &MilDisplay, M_NULL, M_NULL);//分配显示的图像BufferMbufAlloc2d(MilSystem, 500, 500, M_DEF_IMAGE_TYPE, M_IMAGE+M_DISP, &MilImage);/* 初始化Buffer,内存中绘制相应图像 */MbufClear(MilImage, 0L);MgraColor(M_DEFAULT, 255L);MgraArcFill(M_DEFAULT, MilImage, 200L, 200L, 10L, 10L, 0.0, 360.0);MgraText(M_DEFAULT, MilImage, 0L, 0L, " MIL ");/* 图像Buffer内容显示到相应Display上,此后修改Buffer,Display自动刷新 */MdispSelect(MilDisplay, MilImage);/* 打印提示信息. */printf("A circle was drawn in the displayed image buffer.\n");printf("Press <Enter> to end.\n");getchar();/* 释放图像Buffer. */MbufFree(MilImage);/* 释放默认应用分配的资源. */MappFreeDefault(MilApplication, MilSystem, MilDisplay, M_NULL, M_NULL);return 0;
}

可以看到最开始分配了Mil的对象,每个对象分配后都有一个MIL_ID类型的标识变量,Application和System是至少要有的,由于有存储和显示图像的需求,还要分配Buffer和Display,没有采集图像的功能,所以不需要分配Digtizer。

最开始程序分配了系统默认的Application、System和Display,这里的Display类型就是前面提及的MIL内建的用于演示的display窗口。


博客中代码文件下载链接


原创,转载请注明来自http://blog.csdn.net/wenzhou1219

这篇关于2.MIL开发基础概念和步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/418108

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP