欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt使用Matlab函數的詳細步驟

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

背景:

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

注意:以下所有功能及配置過程,默認已經將所需軟件正確安裝成功

環(huán)境

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

Matlab函數實現(xiàn)

在Matlab中編寫關于圖像分割的函數 image_segment.m,假設其代碼如下:

// 具體代碼略去,函數的主要格式如下,必須是帶參數的函數而不是腳本,否則會報錯

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");%輸出結果,保存為tif圖片
end

將Matlab函數轉換成動態(tài)鏈接庫

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

輸入以下命令

!mcc

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

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,會出現(xiàn)如下結果。由于我們在C++環(huán)境下開發(fā),選擇帶C++的選項

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

隨后點擊APP,并點擊下拉選項

選擇Liberty Complier

“TYPE”部分選擇C++ shared Library,“EXPORTED FUNCTIONS”是需要導出的m文件,點擊+號選擇需要編寫的函數,選擇Runtime downloaded from web,最后點擊Package即可

在項目文件下會生成與函數名相同的子目錄

進入for_redistribution_files_only文件夾,將生成的dll/lib/h文件,放入Qt項目的代碼文件夾中

Qt調用

參考

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

運行以及問題處理

待上面步驟依次執(zhí)行后,開始將相關功能集成與Qt項目中

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

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

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

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

總結

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

相關文章

  • 基于Qt實現(xiàn)簡單的計算器

    基于Qt實現(xiàn)簡單的計算器

    這篇文章主要介紹了如何使用Qt框架實現(xiàn)一個簡單的計算器應用,我們將使用C++編程語言和Qt的圖形用戶界面庫來開發(fā)這個應用,并展示如何實現(xiàn)基本的算術操作,希望對大家有所幫助
    2023-11-11
  • 華為面試題答案找出最大長度子字符串

    華為面試題答案找出最大長度子字符串

    找出最大長度子字符串,打印并且返回長度。 例如 str = "abc123abcd234abcdefgha324adsdawqdasdaseqqwe345abchded",看下面的代碼實現(xiàn)吧
    2013-12-12
  • C語言字符串函數與內存函數精講

    C語言字符串函數與內存函數精講

    這篇文章主要介紹一些c語言中常用字符串函數和內存函數的使用,并且為了幫助讀者理解和使用,也都模擬實現(xiàn)了他們的代碼,需要的朋友可以參考一下
    2022-04-04
  • OpenCV實現(xiàn)二值圖像的邊緣光滑處理

    OpenCV實現(xiàn)二值圖像的邊緣光滑處理

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)二值圖像的邊緣光滑處理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C語言實現(xiàn)刮刮樂效果是示例代碼

    C語言實現(xiàn)刮刮樂效果是示例代碼

    這篇文章主要為大家詳細介紹了如何C語言模擬實現(xiàn)刮刮樂的效果,只要按下鼠標左鍵并移動就可以刮開刮卡層,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-01-01
  • OpenCV繪制圖形功能

    OpenCV繪制圖形功能

    這篇文章主要為大家詳細介紹了OpenCV繪制圖形功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++設計模式之外觀模式(Facade)

    C++設計模式之外觀模式(Facade)

    這篇文章主要為大家詳細介紹了C++設計模式之外觀模式(Facade),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Qt實現(xiàn)文本編輯器(一)

    Qt實現(xiàn)文本編輯器(一)

    在Qt中QMainWindow是一個為用戶提供主窗口程序的類,包含了:菜單欄、工具欄、錨接部件、狀態(tài)欄以及一個中部件。本文將利用QMainWindow制作一個文本編輯器,感興趣的可以試一試
    2022-01-01
  • 深入理解atoi()與itoa()函數的用法

    深入理解atoi()與itoa()函數的用法

    本篇文章是對atoi()與itoa()函數的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • VC雙畫布消除屏幕閃爍實例詳解

    VC雙畫布消除屏幕閃爍實例詳解

    這篇文章主要介紹了VC雙畫布消除屏幕閃爍實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論