日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab调用opencv库,matlab调用opencv库

發(fā)布時間:2023/12/19 循环神经网络 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab调用opencv库,matlab调用opencv库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

matlab中有許多圖像處理的函數(shù)簡單方便,比如矩陣x 求垂直積分 直接sum(x) 就可以了。不知道OPENCV里面有沒有類似的功能,反正我是沒找到。就準(zhǔn)備用matlab調(diào)用OPENCV里面的函數(shù)。需要將opencCv的lib加到matlab的環(huán)境中。

看到網(wǎng)上有兩種不同的cpp處理方式,有人是在VS2008下面編譯然后matlab調(diào)用,也有直接用mex命令編譯的。我采用后面這種方式

系統(tǒng)環(huán)境: win XP

matalb: matlab 2010a

c++ compiler: visual studio 2008

OpenCV : ?2.1版本

剛開始matlab版本是7.1 始終不能識別到VS2008的C 編譯器,看到有些人的解決辦法是下面這樣的。

關(guān)于Matlab找不到vs2008或vs2005編譯器的解決辦法.

問題:matlab命令行中運行mex -setup后,找不到vs2008或vs2005編譯器

>> mex -setup

Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n? y

Select a compiler:

[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2008a\sys\lcc\bin

[0] None

原因:matlab在識別vs的編譯器時,使用的是“version"英文,而vs08顯示的版本信息是“優(yōu)化編譯器”五個漢字,匹配不上,所以找不到。

解決方案:用記事本打開matlab/r2009a/bin/mexsetup.pm文件,找到 correc_version函數(shù)(第477行,也可用ctrl+F查找),將這個函數(shù)中的return ($version =~ /Version.$versionNumber/i);改成return ($version =~ /優(yōu)化編譯器.$versionNumber/i);即可。

但我發(fā)現(xiàn)我這樣做了還是不行,提供參考。也許是我機(jī)器配置的問題。

我的解決方法簡單粗暴,直接裝matlab R2010b, mex -setup 里面就直接可以識別到VS2008的編譯器了。

接下來在matlab的配置文件中添加OpenCV庫支持,

mex -v 查看配置文件所在文件夾位置

其中option filename就是配置文件。我的機(jī)器配置輸出如下所示。其中紅色為添加opencv的更改部分。

mex -v

-> Default options filename found in C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2011b

----------------------------------------------------------------

-> ? ?Options file ? ? ? ? ? = C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2011b\mexopts.bat

我改了如下三個地方:

添加

set OPENCVDIR=D:\OpenCV2.1

set PATH=%VCINSTALLDIR%\BIN\;%VSINSTALLDIR%\VC\bin;%LINKERDIR%\bin;%VSINSTALLDIR%

\Common7\IDE;%

VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\Tools\bin;%VCINS

TALLDIR%\VCPack

ages;%MATLAB_BIN%;

%

OPENCVDIR%

;%PATH%

set INCLUDE=%VCINSTALLDIR%\ATLMFC\INCLUDE;%VCINSTALLDIR%\INCLUDE;%LINKERDIR%\include;

%OPENCVDIR%

\include\opencv;%INCLUDE%

set LIB=%VCINSTALLDIR%\ATLMFC\LIB;%VCINSTALLDIR%\LIB;%LINKERDIR%\lib;%VSINSTALLDIR%

\SDK\v2.0\lib;%MAT

LAB%

\extern\lib\win32;%OPENCVDIR%\lib;%LIB%

set LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%"

cxcore210d.lib cv210d.lib

highgui210d.lib

libmx.lib libmex.lib libmat.lib /MACHINE:X86 kernel32.lib user32.lib

gdi32.lib

winspool.lib comdlg32.lib

advapi32.lib shell32.lib ole32.lib oleaut32.lib

uuid.lib

odbc32.lib odbccp32.lib /nologo /incremental:NO

/implib:"%LIB_NAME%.x" /MAP:"%OUTDIR%%MEX_NAME%%MEX_EXT%.map"

以下例子借鑒自http://blog.csdn.net/climbingc/article/details/6762424

在matlab當(dāng)前目錄下建立cpp文件(簡單方法,txt改后綴為cpp),vs打開敲入代碼,代碼需要

是Matlab的C語言接口風(fēng)格,函數(shù)內(nèi)部調(diào)用OpenCV函數(shù)演示功能,簡化后的代碼:程序命名為

useOpenCV.cpp保存。

#include"mex.h"

#include???? "cv.h"

#include?? ?"highgui.h"

void mexFunction (int nlhs, mxArray *plhs[], // 輸出參數(shù)個數(shù),及輸出參數(shù)數(shù)組

int nrhs, const mxArray *prhs[]) // 輸入?yún)?shù)個數(shù),及輸入?yún)?shù)數(shù)組

{

char name[256];

int buflens =mxGetNumberOfElements(prhs[0]);

mxGetString(prhs[0], name, buflens+1);

if(!mxIsChar(prhs[0]))

{

mexErrMsgTxt("First parameter must be string/n");

}

mexPrintf(name);

IplImage * img = cvLoadImage(name, 1);

if(img->imageData == NULL)

{

mexErrMsgTxt("Error in image/n");

}

cvNamedWindow("1",1);

//imshow("1",mat);

cvShowImage("1",img);

cvWaitKey(0);

return;

}

5 在matlab里輸入 mex useOpenCV.cpp編譯。

6 在matlab里輸入命令調(diào)用編譯好的文件:useOpenCV(‘lena.bmp’);即可調(diào)用。

總結(jié)

以上是生活随笔為你收集整理的matlab调用opencv库,matlab调用opencv库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。