C++Builder XE

Matrox Solios采集卡采集图像示例

前言

本文主要讲解如何在C++Builder XE的开发环境上搭建MIL,实现控制Solios采集卡进行图像采集


正文

一、MIL是什么?

MIL是Matrox公司为Solios采集卡开发的配套驱动程序,里面包含功能强大的图像采集函数库Mil-Lite(基本控制库)和Mil(模式识别库),另外还提供了专为控制图像采集、传输、处理、分析及显示而集成的Active Mil和Active Mil-Lite控件,支持在VC、VC++、VB、Borland C/C++下调用。

二、如何使用MIL?

1.安装采集卡驱动

直接双击setup.exe程序,按照引导一直next,直至安装完成即可。
在这里插入图片描述
注意:博主安装的是32bit MIL-Lite 9 R2 build 1950,若要完整安装教程,可以参考 [青山笑我依旧在](https://blog.csdn.net/qq_23107577/article/details/120365952) 博主写的文章

2.设置环境变量

假设安装目录为 D:\Program Files (x86)\Matrox Imaging

① 打开环境变量
此电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量
② 新增路径到Path下
双击系统变量下的Path变量,添加以下路径
D:\Program Files (x86)\Matrox Imaging\Mil\DLL

3.C++Builder XE环境设置

① 新建VCL Forms Application工程
② Project -> Options -> Directories and Conditionals
在Include path添加以下头文件路径
D:\Program Files (x86)\Matrox Imaging\Mil\Include
D:\Program Files (x86)\Matrox Imaging\Mil\Include\MilDyn
在这里插入图片描述

在Library path添加静态库文件路径
D:\Program Files (x86)\Matrox Imaging\Mil\LIB
在这里插入图片描述
③直接将Mil.lib添加到工程里
在这里插入图片描述
注意:C++Builder XE直接调用VC开发的库文件会报以下错误,解决方法是使用C++Builder XE自带的implib.exe 将vc的dll转换成bcb支持的lib即可使用,具体命令如下
implib.exe /f D:\Output\BCBFormat\LIB\Mil.lib D:\Program Files (x86)\Matrox Imaging\Mil\DLL\Mil.dll
在这里插入图片描述

4.示例代码


#include <Mil.h>
MIL_ID MilSys = M_NULL;
MIL_ID MilApp = M_NULL;
MIL_ID MilImage = M_NULL;
MIL_ID MilDigit = M_NULL;
MIL_ID MilDisplay = M_NULL;
char DCF_PATH[]="solcl_mil80_XCL-C500_8bit_2tap_c.dcf";//INPUT DCF PATH
char destPath[]="D:\\Log\\output\\test.tiff";

void MilCaptureTestDemo(){
	ShowMessage("初始化");
		MappAllocDefault(M_SETUP,&MilApp,&MilSys,M_NULL,M_NULL,M_NULL);
        //分配采集器
        MdigAlloc(MilSys,M_DEFAULT,(MIL_API_CONST_TEXT_PTR)DCF_PATH,M_DEFAULT,&MilDigit) ;
		//分配buffer
	ShowMessage("分配内存");
        long imgx,imgy,imgtype;
        imgx = MdigInquire(MilDigit,M_SIZE_X,M_NULL);
        imgy = MdigInquire(MilDigit,M_SIZE_Y,M_NULL);
        imgtype= MdigInquire(MilDigit,M_TYPE,M_NULL);
        MbufAlloc2d(MilSys,imgx,imgy,imgtype,M_DISP+M_GRAB+M_IMAGE,&MilImage);
        MbufClear(MilImage,0);
	ShowMessage("采集");
		AnsiString destPath=ExtractFilePath(Application->ExeName)+"test."+Edit_Suffx->Text;
		MdigGrab(MilDigit,MilImage);//采集单帧画面

		if(MilImage!=M_NULL){

			MbufSave(destPath.c_str(),MilImage);
			Image1->Picture->LoadFromFile(destPath);
            MbufFree(MilImage);
			ShowMessage("保存成功!");
		}

        if(MilDigit!=M_NULL){
            MdigFree(MilDigit);
        }

        if(MilApp!=M_NULL)
                MappFreeDefault(MilApp,MilSys,MilDisplay,M_NULL,M_NULL);

}


总结

通过以上的步骤说明,相信大家已经对如何在BCB环境上搭建使用MIL API有一个初步了解,借用诗人陆游的话来说,“纸上得来终觉浅,绝知此事要躬行”,大家可以亲自动手实验下,印象会更加深刻。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值