最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt使用Matlab函數(shù)的詳細(xì)步驟

 更新時(shí)間:2023年01月18日 11:38:39   作者:Pandamahu  
由于項(xiàng)目需要,需要調(diào)用現(xiàn)有的matlab程序,下面這篇文章主要給大家介紹了關(guān)于Qt使用Matlab函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

背景:

個(gè)人的Qt項(xiàng)目中,需要一個(gè)圖片分割算法。該算法之前在Matlab上實(shí)現(xiàn)過(guò),同時(shí)轉(zhuǎn)成C++版本有點(diǎn)麻煩,因此嘗試通過(guò)Qt與Matlab編程相結(jié)合的方式,實(shí)現(xiàn)該功能。

注意:以下所有功能及配置過(guò)程,默認(rèn)已經(jīng)將所需軟件正確安裝成功

環(huán)境

  • Win10
  • Qt 5.12.10 (MSVC 2017 64 bit)
  • Matlab R2022b

Matlab函數(shù)實(shí)現(xiàn)

在Matlab中編寫(xiě)關(guān)于圖像分割的函數(shù) image_segment.m,假設(shè)其代碼如下:

// 具體代碼略去,函數(shù)的主要格式如下,必須是帶參數(shù)的函數(shù)而不是腳本,否則會(huì)報(bào)錯(cuò)

function image_segment(rgb_path)
close all;
%UNTITLED7 Summary of this function goes here
% Detailed explanation goes here
I=imread(rgb_path);% normal map loading
I=rgb2gray(I);
...
...
imwrite(I,"mask.png");%輸出結(jié)果,保存為tif圖片
end

將Matlab函數(shù)轉(zhuǎn)換成動(dòng)態(tài)鏈接庫(kù)

首先檢查自己的mcc編譯器是否可用

輸入以下命令

!mcc

若正常,則會(huì)出現(xiàn)以下結(jié)果:

mcc Compile MATLAB functions for deployment outside MATLAB.  
 mcc [-options] fun [fun2...]  
  
Options applicable across all deployment targets:  
 -?  Display help for the mcc command  
 -a  Add additional files or directories to be included in the build  
 -d  Build output directory  
 -g  Include debugging symbol information  
 -I  Add a directory to be searched for MATLAB files  
 -v  Verbose display of build  
  
MATLAB Compiler  
 Standalone Application (MATLAB|Hadoop|Spark) 
 mcc -m <matlabFile.m>  
  
 Excel Add-In  
 mcc -W 'excel:<addinName>,<className>' -b <matlabFile.m>  
  
 Hadoop Deployable Archive  
 mcc -H -W 'hadoop:<archiveName>,CONFIG:<configFile.txt>' <mapperFile.m> <reducerFile.m> <datastoreInfo.mat>  
  
 Spark Application  
 mcc -C -W 'spark:<appName>,<sparkMajorVersion>' <matlabFile.m>  
  
MATLAB Compiler SDK  
 C Shared Library  
 mcc -W lib:<libraryName> <matlabFile.m>  
  
 C++ Shared Library  
 mcc -W cpplib:<libraryName> <matlabFile.m>  
  
 .NET Assembly  
 mcc -W 'dotnet:<assemblyName>,<className>' <matlabFile.m>  
  
 Java Package  
 mcc -W 'java:<packageName>,<className>' <matlabFile.m>  
  
 Python Package  
 mcc -W python:<pythonPackageName> <matlabFile.m>  
  
 COM Component  
 mcc -W com:<componentName> <matlabFile.m>  
  
MATLAB Production Server  
 Deployable Archive  
 mcc -W CTF:<archiveName> -U <matlabFile.m>  
  
 Deployable Archive for Excel Add-In  
 mcc -W mpsxl:<addinName> <matlabFile.m>  
  
Replace single quotes with double when executing the mcc command from a Windows Command Prompt.  
  
For more details, execute "doc mcc" from MATLAB. 

隨后在命令行輸入mbuild -setup,會(huì)出現(xiàn)如下結(jié)果。由于我們?cè)贑++環(huán)境下開(kāi)發(fā),選擇帶C++的選項(xiàng)

之后在命令行輸入mex -setup,同樣是選擇帶C++的選項(xiàng)

隨后點(diǎn)擊APP,并點(diǎn)擊下拉選項(xiàng)

選擇Liberty Complier

“TYPE”部分選擇C++ shared Library,“EXPORTED FUNCTIONS”是需要導(dǎo)出的m文件,點(diǎn)擊+號(hào)選擇需要編寫(xiě)的函數(shù),選擇Runtime downloaded from web,最后點(diǎn)擊Package即可

在項(xiàng)目文件下會(huì)生成與函數(shù)名相同的子目錄

進(jìn)入for_redistribution_files_only文件夾,將生成的dll/lib/h文件,放入Qt項(xiàng)目的代碼文件夾中

Qt調(diào)用

參考

此處和上一步,可參考該鏈接中part3以及part4.1-part4.5

運(yùn)行以及問(wèn)題處理

待上面步驟依次執(zhí)行后,開(kāi)始將相關(guān)功能集成與Qt項(xiàng)目中

  • 首先在mainwindow.h中,添加#include "image_segment.h頭文件
  • 接著執(zhí)行limage_segmentInitialize()初始化,這一步是必須要有的

由于我的Matlab函數(shù)需要接受輸入圖像的地址,那么我們的寫(xiě)法如下

    QString str = "你的圖像地址;
    char * charStr = str.toLocal8Bit().data();
    mwArray rgb_path(charStr);
    image_segment(rgb_path);

需要注意的是,matlab在接收參數(shù)輸入時(shí),必須是mwArray格式,在這里我是string地址,因此需要將其轉(zhuǎn)換為matlab能夠識(shí)別的格式。同時(shí)需要注意圖像地址在Qt書(shū)寫(xiě)時(shí)的格式,否則會(huì)出現(xiàn)讀取錯(cuò)誤的情況

總結(jié)

到此這篇關(guān)于Qt使用Matlab函數(shù)的文章就介紹到這了,更多相關(guān)Qt使用Matlab函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++多繼承多態(tài)的實(shí)例詳解

    C++多繼承多態(tài)的實(shí)例詳解

    這篇文章主要介紹了C++多繼承多態(tài)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++順序表的基本操作實(shí)現(xiàn)

    C++順序表的基本操作實(shí)現(xiàn)

    大家好,本篇文章主要講的是C++順序表的基本操作實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 推薦幾款實(shí)用的C++ 在線工具

    推薦幾款實(shí)用的C++ 在線工具

    這篇文章主要推薦了幾款實(shí)用的C++ 在線工具,幫助大家更好的進(jìn)行c++開(kāi)發(fā),感興趣的朋友可以了解下載。
    2020-10-10
  • C/C++ memset方法的誤區(qū)

    C/C++ memset方法的誤區(qū)

    memset 作為對(duì)內(nèi)存初始化的函數(shù),還是有不少坑和誤區(qū)的,今天就來(lái)對(duì)這個(gè)函數(shù)作一個(gè)總結(jié)。避免后期使用不當(dāng)踩入坑,需要的朋友可以參考下
    2021-04-04
  • Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例

    Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例

    驗(yàn)證碼的原理基于人類(lèi)視覺(jué)和計(jì)算機(jī)視覺(jué)的差異性,通過(guò)給用戶(hù)顯示一些難以被機(jī)器識(shí)別的圖形或文字,讓用戶(hù)進(jìn)行人機(jī)交互,確認(rèn)自己的身份,這樣可以有效保護(hù)網(wǎng)站安全,所以本給大家介紹了Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例,感興趣的朋友可以參考下
    2024-01-01
  • C語(yǔ)言實(shí)現(xiàn)文本編輯器系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)文本編輯器系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)文本編輯器系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C語(yǔ)言實(shí)現(xiàn)班級(jí)成績(jī)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)班級(jí)成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)班級(jí)成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++重載運(yùn)算符實(shí)現(xiàn)分?jǐn)?shù)加減乘除

    C++重載運(yùn)算符實(shí)現(xiàn)分?jǐn)?shù)加減乘除

    這篇文章主要為大家詳細(xì)介紹了C++重載運(yùn)算符實(shí)現(xiàn)分?jǐn)?shù)加減乘除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • STL  priority_queue(優(yōu)先隊(duì)列)詳解

    STL priority_queue(優(yōu)先隊(duì)列)詳解

    這篇文章主要介紹了 STL priority_queue(優(yōu)先隊(duì)列)詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式

    C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式

    在圖像處理中,我們經(jīng)常根據(jù)需要截取圖像中某一區(qū)域做處理,下面這篇文章主要給大家介紹了關(guān)于C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評(píng)論

新和县| 衡阳市| 西峡县| 勃利县| 平湖市| 都昌县| 建平县| 方城县| 蛟河市| 郧西县| 铁岭县| 平和县| 肇东市| 南和县| 舒城县| 嘉义市| 嘉鱼县| 东至县| 白河县| 兰州市| 抚州市| 板桥市| 鹤峰县| 孝义市| 始兴县| 曲沃县| 和平县| 徐州市| 三亚市| 滨州市| 巴彦县| 禄丰县| 古交市| 聂拉木县| 莒南县| 绍兴市| 田东县| 英超| 扶绥县| 融水| 鹿邑县|