国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VC與MATLAB混合編程在圖像識別中的應用

2014-03-11 08:07陳玉華林來賓洛陽師范學院信息技術(shù)學院西門子中國有限公司機械傳動部
關(guān)鍵詞:圖像識別調(diào)用引擎

陳玉華林來賓/洛陽師范學院信息技術(shù)學院;西門子(中國)有限公司機械傳動部

VC與MATLAB混合編程在圖像識別中的應用

陳玉華1林來賓2/1洛陽師范學院信息技術(shù)學院;2西門子(中國)有限公司機械傳動部

詳細描述了在VC環(huán)境下利用Matlab進行圖像識別、提取的方法。本文以一個成像光斑的識別為例,介紹了Matlab引擎的設(shè)置,從而使VC和Matlab之間進行通信,實現(xiàn)圖像的快速識別。

混合編程;引擎;matlab

引言:MATLAB強大的科學計算與可視化功能,簡單易用的開放式可擴展環(huán)境,使MATLAB在許多學科領(lǐng)域中成為計算機輔助設(shè)計與分析、算法研究和應用開發(fā)的基本工具和首選平臺。但由于其編譯器采用偽編譯的方式,在MATLAB中編寫的程序無法脫離其工作環(huán)境而獨立運行。針對這個問題,Mathworks公司為MATLAB提供了應用程序接口,允許MATLAB和其他應用程序進行數(shù)據(jù)交換,并且提供了C/C++數(shù)學和圖形函數(shù)庫,為在其他程序設(shè)計語言中調(diào)用MATLAB的高效算法提供了可能。

VC++是微軟公司利用C++的底層機理開發(fā)的編譯器,與其他一些C++編譯器相同,都以C++語言為編譯對象。

一、VC與matlab接口方式的選擇

VC與MATLAB之間的接口方式有3種:1)在VC中利用MATLABEngine調(diào)用MATLAB函數(shù);2)將MATLAB程序編譯成MEX文件;3)在VC程序中利用MATLAB C++數(shù)學庫調(diào)用MATLAB函數(shù)。方法1是采用引擎方式,可以在非MATLAB為主的應用程序中使用MATLAB功能,該方法不需連接整個MATLAB,只需在VC中嵌入必要的MATLAB Engine,便可以調(diào)用MATLAB中幾乎所有的函數(shù)或命令,無需編譯成C或C++程序;方法2是在以MATLAB為主的應用程序中,需要在MATLAB應用程序中調(diào)用其他語言的情況下使用,方法3的缺點是不能夠利用MATLAB中豐富的圖形句柄處理函數(shù)。本文采用的是引擎調(diào)用的方法。

二、VC調(diào)用matlab引擎

MATLAB引擎是一組函數(shù),通過這組函數(shù),用戶可以在自己的應用程序中實現(xiàn)對MATLAB的控制,來完成計算和圖形繪制等任務(wù),這相當于把MATLAB當成一個計算引擎。在開發(fā)一個專業(yè)的應用程序時,可以采用VC開發(fā)用戶界面,而分析部分采用MATLAB編程實現(xiàn),這樣可以利用MATLAB強大的分析功能,縮短程序開發(fā)周期。

MATLAB引擎的操作是通過啟動一個獨立于應用程序的進程來實現(xiàn)的。這樣只需要把少量的引擎通信庫函數(shù)連接到應用程序,因為應用程序和引擎是兩個獨立的進程,它們之間的通信機制與開發(fā)環(huán)境相關(guān)。MATLAB提供了一個函數(shù)庫來實現(xiàn)對MATLAB的控制,這個函數(shù)庫的主要功能有:啟動和結(jié)束MATLAB進程;從MATLAB發(fā)送的接收數(shù)據(jù);向MATLAB發(fā)送命令。與其他接口方式相比,引擎提供的MATLAB功能支持是最全面的,它可以完成任何計算和繪圖操作,對所有的數(shù)據(jù)結(jié)構(gòu)提供完全支持。

三、VC調(diào)用matlab引擎設(shè)置

要在VC中成功編譯MATLAB程序,必須包含引擎頭文件Engine.h并引入MATLAB對應的庫文件:libeng.lib,libmat. lib,libmx.lib,libmex.lib。具體的設(shè)置方法如下(以VS2005為例),打開一個工程后:

1.通過菜單工具/選項,打開設(shè)置屬性頁,進入Directories頁面,在目錄下拉列表框中選擇Include files,添加路徑:“C: matlabexterninclude”(假定matlab安裝在C:matlab目錄)。

2.選擇Library files,添加路徑:C:matlabexternlibwin32microsoftmsvc60,該步只需設(shè)置一次。

3.通過菜單工程/設(shè)置,打開工程設(shè)置屬性頁,進入Link頁面,在Object/library modules編輯框中,添加文件名libmx.lib libmat.lib libmex.lib libeng.lib。

該步每個工程都要單獨設(shè)定,因為每個工程所使用的MATLAB函數(shù)庫可以不一樣,因此,設(shè)置可能不同。上面只設(shè)定了libmx.lib libmat.lib libmex.lib libeng.lib,如果使用了其它的庫函數(shù),則需要添加相應的庫文件。

四、VC調(diào)用MATLAB實現(xiàn)圖像識別

在VC中編譯代碼時,必須對頭文件“engine.h”進行包含,這個頭文件非常重要?!癳ngine.h”中包含了MATLAB引擎庫中所有函數(shù)及其相關(guān)數(shù)據(jù)類型的定義,缺少了它,將無法使用MATLAB引擎。如果不加入這個頭文件,在程序編譯時就會出現(xiàn)“調(diào)用沒有定義的MATLAB引擎函數(shù)”的錯誤提示。

接著啟動引擎。定義一個引擎指針ep,該指針首先指向函數(shù)engOpen(),然后開始VC與MATLAB通信。結(jié)合一個光斑圖像提取的例子。

打開引擎后進行進行通信,在VC環(huán)境下,只需把MATLAB環(huán)境下的。m文件轉(zhuǎn)換為引擎調(diào)用即可。主要代碼如下:

最后,通信完畢后關(guān)閉matlab引擎即可。

程序識別的圖像前后對比如下所示:

圖1 識別前圖像

圖2 識別后圖像

五、結(jié)論

VC和matlab在編程和計算上各有自己的優(yōu)缺點,將它們結(jié)合起來,可以開發(fā)出來數(shù)值計算功能強大、界面友好的程序來。

[1]蘇金明等,Matlab與外部程序接口[M].,電子工業(yè)出版社,2004。

[2]袁林等,VC與MATLAB混合編程在圖像處理中的應用 [J].微計算機信息,2008第24卷第4-3期

本文為河南省科技攻關(guān)項目項目編號:102102210479。

陳玉華1976.11~,女,講師,碩士,研究方向為圖像處理

猜你喜歡
圖像識別調(diào)用引擎
核電項目物項調(diào)用管理的應用研究
基于Resnet-50的貓狗圖像識別
高速公路圖像識別技術(shù)應用探討
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
圖像識別在物聯(lián)網(wǎng)上的應用
圖像識別在水質(zhì)檢測中的應用
藍谷: “涉藍”新引擎
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
無形的引擎
基于Cocos2d引擎的PuzzleGame開發(fā)
潞西市| 黔西县| 深州市| 会宁县| 华宁县| 穆棱市| 扎囊县| 望都县| 太仓市| 利津县| 郁南县| 平南县| 修文县| 昆明市| 高陵县| 锡林郭勒盟| 岳池县| 富平县| 万宁市| 谷城县| 延吉市| 新河县| 延安市| 二连浩特市| 屏边| 临沭县| 宁河县| 大连市| 阆中市| 白城市| 丰顺县| 洛隆县| 新平| 漳州市| 日喀则市| 沭阳县| 湄潭县| 宜君县| 灵台县| 裕民县| 开平市|