MIL开发实践(1)——开发环境的设置

目录

  • 前言
  • 软件安装
  • 注意事项
  • MIL图像库函数说明
  • 关于[MIL+QT实践教程](https://www.zhihu.com/column/c_1124353074277572608)的总结
    • MIL+QT实践教程一
    • MIL+QT实践教程二
    • MIL+QT实践教程三
    • MIL+QT实践教程五
    • MIL+QT实践教程六
    • MIL+QT实践教程八
  • 总结

前言

因为工作的原因,需要上手这种利用采集卡采集图像的相机。而正好使用的是Matrox家的采集卡,所以不可避免的接触到MIL。网上一搜,确实资料还是很少,而且,很多还是很久以前的,并不具有太大的参考性。而且,对于整个过程也没有讲的非常清楚。所以,我的这篇博客将会尽我所能,讲清楚如何利用这个采集卡写出代码。我使用的编程环境是:QT5.15 +VS2019。使用的采集卡是:Matrox EV 2MCLF采集卡,使用的相机是:EV71YC2MCL8005-BA1

软件安装

我在软件安装上面花了非常多的时间,首先给出两个软件下载的地址:
MIL-Lite 10软件链接提取码:4y4y
E2V相机驱动 密码:4tzz

注意事项

  1. 安装MIL-Lite还有一件要做的事情就是下载drivermax,drivermax下载路径将两个必要的驱动给下载下来,下载的驱动如下:
    在这里插入图片描述
    在这里插入图片描述
    下载完后,要重启系统,然后接下去做下面的步骤。反正自己扫描一下,缺什么补什么。弄完后,打开电脑的设置管理器看一下采集卡的端口有没有,看一下那个采集卡有没有出现,别是感叹号了。基本要出现下面这种情况:
    MIL开发实践(1)——开发环境的设置_第1张图片

  2. 对于MIL-Lite的安装就参考这个博客吧!首先,打开MIL-Lite时,要对MIL进行配置,这里我将配置文件也给出,到时直接导入就可以了。MIL配置文件链接,里面那个后缀是dcf的文件就是了。注意,要采集卡跟我同种类型的应该才可以配置成功。对于这个的配置你可以参考MIL配置参考博客。这里还有一个使用说明,你也可以稍微参考一下:E2V线扫相机使用说明。

  3. 打开E2v相机的驱动的时候,首先会出现下面这个界面:
    MIL开发实践(1)——开发环境的设置_第2张图片
    一定要点No,不然,你基本看不到后面的东西。
    接下来,会不断地弹出后面的图片:
    MIL开发实践(1)——开发环境的设置_第3张图片
    不断的点击Cancel。不要点OK.然后,如果你电脑性能可以的话。应该就可以看到:
    MIL开发实践(1)——开发环境的设置_第4张图片

然后,点击那个相机,就会出现:
MIL开发实践(1)——开发环境的设置_第5张图片

这些就是这些相机的参数了。后面我会将这些参数在我的程序上面进行显示。

MIL图像库函数说明

  1. MILConfig:分配和使用默认的系统和数字转换器设置。
  2. MappAllocDefault():要分配默认系统和数字转换器。
  3. MsysAlloc()与M_SYSTEM_DEFAULT:一起使用以分配默认系统。MappAlloc:这个函数的主要功能是:为你的应用创建一个控制和执行环境。使用完后记得MapFree
MIL_ID MdigAlloc(
MIL_ID SystemId,  //in  
MIL_INT DigNum,  //in  
MIL_CONST_TEXT_PTR DataFormat,  //in  
MIL_INT64 InitFlag,  //in  
MIL_ID *DigIdPtr  //out  
) 
  1. 将返回的系统标识符与MdigAlloc()结合使用,并将设备号和数据格式均设置为M_DEFAULT,以分配默认数字化仪。
  2. MdigGrab()或MdigGrabContinuous():可以通过数字转换器从摄像机中获取数据。
  3. MappAllocDefault()被实现为宏。分配默认的数字转换器和显示,并分配和清除默认的可显示图像缓冲区。
  4. M_HOST_ADDRESS:指向缓冲区或M_NULL的主机指针。 如果可供使用的话,该指针可用于直接访问数据主机CPU的MIL缓冲区。
  5. M_PHYSICAL_ADDRESS:主机缓冲区的物理地址或M_NULL。 仅适用于非分页缓冲区映射在主机上。 使用这种类型的缓冲区仅供主机以外的总线主机访问中央处理器。
  6. MdigControl控制采集时的比例(例如采集比例设为1/2,那么采集时从相机Buffer间隔取值,相当于相机Buffer为原来的1/2)。
  7. MdispZoom控制显示的比例(例如显示比例设为2,那么显示时从PC Buffer线性插补为原来2倍)。
  8. 接下来,重点讲一下三个采集函数。

MdigGrab:这是最常用的采集函数,但每次只能采集一个帧,存储在Millmage之中。
MdigGrabContinuous:这是一个连续采集的采集函数,但注意,它并不会存储在PCbuffer之中,在最后一帧之前都是从相机Buffer直接总到显存Buffer的。直到最后一帧,才会储存在PCbuffer之中。
MdigProcess:这个函数也是采图函数,不过,它在每一帧采集到的时候,都会调用它参数里面的回调函数,每来一帧调一次。相当于是帧事件驱动了这个回调函数。

关于MIL+QT实践教程的总结

下面这个是网上看的一些教程并做出的一些总结,也许对你有些许的指导意义。

MIL+QT实践教程一

  1. 图像导入函数MbufImport:可以使用其自身的自动识别及分配能力,不必再单独定义导入图像类型和需要分配的内存大小
const QString& fn; //fn为QString图像路径
LPCTSTR wFilename = (LPCTSTR)fn.utf16(); //QString转LPCTSTR
MbufImport((MIL_TEXT_CHAR*)wFilename,M_DEFAULT,M_RESTORE,Systemp,&SRC_MilImage);
  1. Mil_ID修饰的都是对象。
  2. 所以,现在把图像显示到Qt Widget是用这种形式:
    先声明出一个窗口句柄对象,然后把窗口ID赋值给该窗口句柄
ui->widget->setUpdatesEnabled(false);//在使用下面的功能前要先禁用更新
void MdispSelectWindow(
   MIL_ID DisplayId,  //in  
   MIL_ID ImageBufId,  //in  
   MIL_WINDOW_HANDLE ClientWindowHandle  //in 
) 
HWND ClientWindowHandle = (HWND)ui->widget->winId();//获取窗口ID
  1. 有分配MgraAllocList,还需进行MgraFree操作.
  2. 经过分配的ID关闭时都尽量释放掉,MbufFree则是必须要释放的。

MIL+QT实践教程二

  1. 管理Display的函数MdispControl
//允许鼠标实现缩放和拖动
MdispControl(m_MilDisplay, M_MOUSE_USE, M_ENABLE);
//允许覆盖显示图像内容
MdispControl(m_MilDisplay, M_OVERLAY, M_ENABLE);
//允许Disp缩放
MdispControl(m_MilDisplay, M_SCALE_DISPLAY, M_ENABLE);
//允许更改显示所在的window窗体标题
MdispControl(m_MilDisplay, M_WINDOW_TITLE_BAR_CHANGE, M_ENABLE);
  1. MsysInquire:获取系统设置。

MIL+QT实践教程三

  1. 想要实现子窗口嵌入在父窗口里面,需要借助QMdiSubWindow和mdiArea。
  2. MdispSelectWindow:Select an image buffer to display in a user-defined window.

MIL+QT实践教程五

  1. 禁用窗口最大化:
 //model_subWin为禁用最大化子窗口的类
    model_subWin->setWindowFlags(model_subWin->windowFlags() &~ Qt::WindowMaximizeButtonHint);
  1. QTabWidget使用要点总结。

MIL+QT实践教程六

  1. MmodInquire:Inquire information about a specified Model Finder context, a specified model, or a specified result buffer.
  2. MbufAlloc2d:Allocate a 2D data buffer.

MIL+QT实践教程八

今天主要讲MmodDraw和 MgraControl、 MgraInquireList如何配合使用完成以下功能:
一、如何获取图像自定义的 MgraRect图像内容;
二、如何指定图像的绘制区域;
a. 在指定矩形区域内绘制
b. 在未指定区域内绘制

总结

关于这个环境的配置确实花了非常多的时间,遇到了非常多的问题,所以,有一些教程和指引非常的重要,最好多跟供应商的那边多沟通沟通,希望能多获取一些支持。
如果有需要可以去看看我的另外三篇文章。感谢您的观看~

MIL开发实践(1)——开发环境的设置
MIL开发实践(2)——MIL实时采图
MIL开发实践(4)——E2v相机参数
若有错误,欢迎指出,感谢~

你可能感兴趣的:(QT,MIL,QT,插件)