qt matlab 混合编程

news2024/10/7 16:20:13

1.环境的说明

matlab 2021a

qt 5.12.10

qt creator 4.13.1

opencv 4.3.0

eigen-3.4.0/eigen-3.4.0

 2.matlab 中导出dill

aberr_analy1的导出dill举例

  1. 命令行中输入:deploytool

2. 选择LIbrarycompiler

3type 选择c++

4,选择相应的

5. 点击package  选择保存的路径即可

6.导出后:

只需要 下面这个文件里面的dll .h 和。Lib 文件

3.qt 端 的环境配置

1.opencv +eigen-3.4.0+matlab + 导出的lib 和include 的路径


win32:CONFIG(release, debug|release): LIBS += -LD:/my_software/opencv/opencv/newbuil_with_contrib/x64/vc15/lib/ -lopencv_world453
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/my_software/opencv/opencv/newbuil_with_contrib/x64/vc15/lib/ -lopencv_world453d

INCLUDEPATH +=D:/my_software/opencv/opencv/newbuil_with_contrib/include
DEPENDPATH += D:/my_software/opencv/opencv/newbuil_with_contrib/include/opencv2

INCLUDEPATH += E:/my_software/eigen-3.4.0/eigen-3.4.0

win32: LIBS += -L$$PWD/include/ -lmatAdd
win32: LIBS += -L$$PWD/include/ -lfringe_process
win32: LIBS += -L$$PWD/include/ -lcalculatephase
win32: LIBS += -L$$PWD/include/ -ltest_FWLSI_FUNC4
win32: LIBS += -L$$PWD/include/ -laberr_analy1

win32: LIBS += -L$$PWD/include/ -laberr_analy2

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include



# .h文件搜索路径
INCLUDEPATH +=D:/my_software/matlab/extern/include
INCLUDEPATH += D:/my_software/matlab/extern/include/Win64

# 用到的MATLAB 的.lib库文件 及其搜索路径
INCLUDEPATH += D:/my_software/matlab/extern/lib/win64/microsoft
DEPENDPATH += D:/my_software/matlab/extern/lib/win64/microsoft

win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -llibmex
win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -llibmx
win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -llibmat
win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -llibeng
win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -lmclmcr
win32: LIBS += -LD:/my_software/matlab/extern/lib/win64/microsoft/ -lmclmcrrt

在项目目录中新建了一个include 文件,放导出的include  和lib 文件 

项目的运行文件

release /debug 下面放dill

 

 

4qt 中的相关运行代码示例

先写导入.h

 mwArray 重点在于  mwArray 的声明

void MainWindow::dill_demo1( )
{
    //    img_in.convertTo(img_in, CV_32F);
    //    cv::Mat img_ini=ganshe_matlabe.fringe_process(img_in);
    if (!matAddInitialize()) //DLL 初始化
    {

        return;
    }
    double   vectA[]={1,2,3}; //向量A
    double   vectB[]={5,6,7};  //向量B

    int   rowCnt=1;   //行数
    int   colCnt=3;   //列数
    int   elementCnt=3; //元素个数
    mwArray matrixA(rowCnt,colCnt,mxDOUBLE_CLASS, mxREAL);//定义数组
    matrixA.SetData(vectA,elementCnt); //将C++ 的一维数组存储到 MATLAB的二维数组

    mwArray matrixB(rowCnt,colCnt,mxDOUBLE_CLASS, mxREAL);//定义数组
    matrixB.SetData(vectB,elementCnt); //

    //计算
    mwArray matrixC(rowCnt,colCnt,mxDOUBLE_CLASS, mxREAL);//定义数组,double类型
    int nargout=1;//输出变量个数
    matAdd(nargout,matrixC,matrixA,matrixB);//C=A+B
    int dim=2; //按照二维数组读出matrixC
    double   av=matrixC.Get(dim,1,1); //第1行,第1列
    double   bv=matrixC.Get(dim,1,2);// 第1行,第2列
    double   cv=matrixC.Get(dim,1,3); // 第1行,第3列
    QString  str=QString::asprintf("%.0f, %.0f, %.0f", av,bv,cv);
    qDebug()<<"str"<<str;



}

1二维图像 中 mwArray 的声明方式

mwArray I_in2(2, dims2, mxDOUBLE_CLASS, mxREAL);

        cv::Mat image_test = cv::imread("E:/my_self_progect/image/expame/512X512.jpg", 
            cv::IMREAD_GRAYSCALE);
        if (!calculatephaseInitialize()) //DLL 初始化
        {
            std::cerr << "Could not initialize the fringe_process properly" << std::endl;
            return;
        }
       
        if(!image_test.empty())
        {

            // Convert cv::Mat to mwArray

            mwSize dims2[2] = {static_cast<mwSize>(image_test.rows), static_cast<mwSize>(image_test.cols)};
            mwArray I_in2(2, dims2, mxDOUBLE_CLASS, mxREAL);
            for (int i = 0; i < image_test.rows; ++i)
            {   for (int j = 0; j < image_test.cols; ++j)
                {
                    I_in2(i + 1, j + 1) = static_cast<double>(image_test.at<uchar>(i, j));
                }

            }
         }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“新KG”视点 | 漆桂林——知识图谱和大语言模型的共存之道

OpenKG 大模型专辑 导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力&#xff0c;知识图谱则丰富了表示知识的方式&#xff0c;两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下&#xff0c;OpenKG组织…

psd-tools

安装 使用 PSD document layers Exporting data to PIL Exporting data to Numpy psd_tools.api.layers PixelLayer TypeLayer 参考资料 psd-tools/psd-tools psd-tools psd-tools/usage 使用psd-tools更改文本层的文本 psd_tools设置文本 https://blog.csdn.net/qq_4010957…

位移贴图的实现原理

在以前的文章中介绍过GLTF编辑器 &#xff0c; 编辑器可以对模型的各种材质纹理进行编辑修改&#xff0c;但是有一些新手用户可能对这些材质纹理不太了解&#xff0c;所以我收集了一些资料对这些材质纹理做一下详细的介绍&#xff0c;今天这篇文章主要是介绍位移贴图。 1、什么…

Leetcode 386. 字典序排数

文章目录 题目代码&#xff08;9.22 首刷看解析&#xff09; 题目 Leetcode 386. 字典序排数 代码&#xff08;9.22 首刷看解析&#xff09; 迭代DFS class Solution { public:vector<int> lexicalOrder(int n) {vector<int> ret(n);int number 1;for(int i 0…

vue下载Excel文件

前端vue实现导出Excel文件 用到的是 上代码 var wb XLSX.utils.table_to_book(document.querySelector(#my-table));//关联dom节点 这个是表格绑定的id名称var wbout XLSX.write(wb, {bookType: xlsx,bookSST: true,type: array})try {FileSaver.saveAs(new Blob([wbout], {…

【C++】STL详解(七)—— stack和queue的使用及模拟实现

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…

IDEA断点常用5种方式——条件断点(循环)、回退、表达式执行、中断(不执行后续代码)、指定异常(常用寻找空指针位置)

1、条件断点 主要用于循环体内&#xff0c;指定循环的数据加入条件。 2、断点回退 用于回退看之前的参数。 3、表达式执行 获取值或者给值重新赋值。 长表达式可以使用线上的JSON转为实体类&#xff0c;进行模拟数据。也可以根据不同环境给变量重新赋值。 4、强制中断…

JVM高级性能调试

标准的JVM是配置为了高吞吐量&#xff0c;吞吐量是为了科学计算和后台运行使用&#xff0c;而互联网商业应用&#xff0c;更多是为追求更短的响应时间&#xff0c;更低的延迟Latency&#xff08;说白了就是更快速度&#xff09;&#xff0c;当用户打开网页没有快速响应&#xf…

C#,数值计算——Multinormaldev的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Multinormaldev : Ran { public Cholesky chol { get; set; } null; private int mm { get; set; } private double[] mean { get; set; } private double[,] xvar {…

零基础学前端(六)重点讲解 JavaScript

1. 该篇适用于从零基础学习前端的小白&#xff0c;完全从零基础角度出发 2. 我们学习时&#xff0c;应该主动向自己提问&#xff1f;只有你能提出问题&#xff0c;你才算是在编程中学习进步了。 3. 初学者不懂得问题很多&#xff0c;在自己在不懂时&#xff0c;一定要求助有经验…

expected ‘,’ after expression in R【R错误】

出现如下错误&#xff1a; 在红色叉的位置&#xff0c;会有提示“expected . after expression”&#xff0c;咋一看出现红色叉的位置没有任何的错误&#xff0c;怎么会出现错误呢&#xff1f; 解决办法&#xff1a; 寻找这个代码第一次出现红色叉的位置&#xff0c;看其是否…

绘图系统六:动态三维展示

文章目录 时间轴单帧跳转动图绘制函数接口优化 &#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据生成导入源码地址 Python打造动态绘图系统 时间轴 三维并不是人类理解的极限&am…

在 Substance Painter中实现Unity Standard Shader

由于有需要在Substance Painter中显示什么样的效果&#xff0c;在Unity就要显示什么样的效果的需求&#xff0c;最近研究了几天&#xff0c;总算在Substance Painter中实现Unity standard的材质的渲染效果。具体效果如下&#xff1a; 在Unity中&#xff1a; Substance Painte…

as 加载aar(包含so文件)遇到问题的解决方法

""" r java.lang.UnsatisfiedLinkEnror :No implementation found for void com.example.myapplication2.Model.init(java.lang .Storing, java.lang .string) 原来是so文件里的Model类的所属的包名&#xff0c;跟我java里的不一样。linux里&#xff0c;可以用 …

AI数字人:最强声音驱动面部表情模型VideoReTalking

目录 1 VideoReTalking论文解读 1.1 介绍 1.2 相关工作 1.2.1 视频编辑中的音频配音 1.2.2 基于音频的单图像面部动画 1.3 框架 1.3.1 语义引导重演网络 1.3.2 口型同步网络 1.3.3 身份感知增强网络 1.3.4 后期处理 1.4 训练 1.4.1 每个模块的训练 1.4.2 评估 1.…

vue组件页面没有加载出来

现象&#xff1a;加载一个组件&#xff0c;生命周期走完&#xff0c;界面没有出来。 由于生命周期都走完&#xff0c;接口也都有请求&#xff0c;最初怀疑&#xff0c;样式原因导致dom元素被吞&#xff0c;然后修改样式无效。 定位方法&#xff1a;dom元素一一移除&#xff0…

Python爬虫技术系列-01请求响应获取-urllib库

Python爬虫技术系列-01请求响应获取-urllib库 1 urllib库1.1 urllib概述1.1.1 urllib简介1.1.2 urllib的robotparser模块1.1.3 request模块1.1.4 Error1.1.5 parse模块 1.2 urllib高级应用1.2.1Opener1.2.2 代理设置 1 urllib库 参考连接&#xff1a; https://zhuanlan.zhihu.…

继往开来,图鸟UI又推出一款高颜值、兼容多平台、丰富组件的图表组件模板

大家好&#xff0c;今天分享的主题是图表统计。图表统计是使用图表和图形来可视化和呈现数据的方法。它通过将数据转化为柱状图、折线图、饼图等形式来展示各种统计指标和趋势。 图表统计可以帮助我们更好地理解和分析数据&#xff0c;发现数据之间的关联和规律&#xff0c;并…

Qt5开发及实例V2.0-第十七章-Qt版MyWord字处理软件

Qt5开发及实例V2.0-第十七章-Qt版MyWord字处理软件 第17章-Qt版MyWord字处理软件17.1 运行界面17.1.1 菜单设计基本操作17.1.2.MyWord系统菜单 17.2 工具栏设计17.2.1 与菜单对应的工具条17.2.2 附加功能的工具条 这段代码的作用是加载系统标准字号集&#xff0c;只要在主窗体构…

景联文科技:2023人工智能数据标注行业现状分析?

随着人工智能产业的快速发展&#xff0c;AI数据标注行业也呈现出蓬勃生机。人工智能算法的不断开发和迭代&#xff0c;离不开结构化数据的支持&#xff0c;AI数据标注行业的发展也得到了人工智能核心产业的带动。预计2027年市场规模有望达到130-160亿元。 随着算法的不断演进和…