Matlab coder生成C++代码 VS环境下运行

  • 背景介绍
  • Matlab脚本生成
    • 测试代码
    • Image Region Analyzer
    • 函数封装
    • Matlab Coder
  • 总结

背景介绍

本次使用Matlab工具Matlab coder 将Matlab下开发的代码转化为C++环境下代码,用于后续项目的开发,本次只是做一个简单的过程记录,内容仅供参考,有错误之处还望指出。

Matlab脚本生成

在图像处理的过程中,我们需要对识别对象的一些特征进行分析与处理,本次使用Matlab工具集中的Image Region Analyzer用于特征的分析与处理:
在这里我们使用一个测试图片

首先我们需要对这张图片进行一些处理,虽然这张图看上去只有黑白两色,但其本质是三通道的彩图需要将其转化为灰度图进行后续的处理。在Matlab中处理过程如下:

  1. 图片信息读取
  2. rgb2gray 彩图转灰度(如是灰度图该步可省略);
  3. imbinarize 二值化;
  4. imshow 显示;

测试代码

%获取原始图片
Im_Input = imread('Test_Fig.jpg');
%彩图转灰度图
Im_Input_Gray = rgb2gray(Im_Input);
%二值化
BW = ~imbinarize(Im_Input_Gray);
%显示二值化之后的图片
imshow(BW);

运行完之后得到结果图

在二值化过程中,我们将我们关注的区域设置为白色,其他区域设置为黑色,此处根据需求自主进行调整即可。

我们得到三组变量,其中BW为我们本次主要处理的对象,其在Matlab中类型属于逻辑变量即非0则1。

Image Region Analyzer

在得到二值化图像之后,我们利用Matlab中Image Region Analyzer对区域的特征进行进一步的分析。

点击Load Image From Workspace 选择BW进行下一步分析;

点击OK


我们会得到四个区域,鼠标点击表格对应参数左边图片区域即可高亮,我们也可以选择更多的区域特征进行后续分析

在Filter中我们可以设置特征范围进行对应筛选,可以是面积、欧拉角等特征。

在Choose Properties模块中我们可以选择更多的特征,点击此处可以查看这些特征的具体的物理含义,本文中不过多赘述。

设置完成后,我们可以通过导出函数的方式,将目前的筛选过程生成脚本文件。

以最基础版的函数为例,我们用于生成C++代码。

函数封装

function [properties] = CSDN_Code()
%获取原始图片
Im_Input = imread('Test_Fig.jpg');
%彩图转灰度图
Im_Input_Gray = rgb2gray(Im_Input);
%二值化
BW = ~imbinarize(Im_Input_Gray);
%显示二值化之后的图片
imshow(BW);
%调用特征提取函数
properties = regionprops(BW_out,'Area','Eccentricity','EquivDiameter', 'EulerNumber', 'MajorAxisLength', 'MinorAxisLength', 'Orientation', 'Perimeter');

简单的封装成函数形式即可。

Matlab Coder


进入界面后点击三个小点选择对应的函数文件,切记一定是函数脚本,完成后选择项目存放路径,点击Next即可

可能会出现不支持的警告,这是由于一些函数在Matlab中不支持Matlab Coder转化所导致的,一般通过Help 查看函数手册,其最后都会说明是否支持Matlab Coder。
本次使用过程中imshow()函数不支持转化,注释即可,不影响功能。
修改无误后点击Next选择函数的输入信息,可手动选择也可自动匹配,本次无输入信息,直接跳过该步骤即可,

选择需要转换的代码进行测试即可

运行无法通过会进行提示,本次在修改代码过程中,未对变量名称进行统一导致编译失败,修改名称即可。

如上图所示则编译无误,可以进行代码生成工作。

可根据个人需求进行设置的调整,本次由于功能简单,涉及内容相对较少,我将所有的功能函数放在一个文件内,可根据需求独立生成C++文件。设置完成后点击Next即可。

对输出语言与编译环境进行简单配置,根据需求自行修改即可,本次使用VS2017为例,点击Generate等待完成即可。

等待片刻后即可生成完成。
将对应的.cpp文件与.h文件可以单独拎出来,在VS中新建空项目补充即可,在运行过程中可能会出现部分头文件缺失,该类头文件属于Matlab自带的一些.h文件,在Matlab安装目录下查找对应文件,并将其复制到工程目录下即可完成编译。

总结

至此完成Matlab代码到C++代码的转换,如有需求,在Matlab代码设计之初,我们需要尽可能多的去考虑那些函数支持转换,那些函数不支持转换,以及编程风格,最好提前为各个变量类型与大小进行定义,避免一些未知的错误。测试代码点击自取

Matlab coder生成C++代码相关推荐

  1. MATLAB/SIMULINK生成嵌入式代码的步骤

    昨天参加了Mathworks公司在东南大学举办的关于MATLAB的培训,内容是关于MATLAB/SIMULINK的嵌入式代码生成以及物理建模,在这里把代码生成的步骤及一些相关内容总结一下. 嵌入式代码 ...

  2. Matlab笔记:Matlab function生成C代码并运行

    1.Matlab函数,输入(x,y,z,roll,pitch,yaw),输出out为8×6的数组 2.点击Matlab coder 3.选择要生成的函数 4.定义输入类型,输入的六个数选择double ...

  3. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤

    MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法:检查MATLAB代码的 ...

  4. 基于MATLAB Coder将matlab代码转换成C代码

    MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码.本文基于matlab2015a编制,但是也适用于matlab 2014~2016的版本. 1. 使用MATL ...

  5. Matlab/Simulink自动生成C代码实验

    目录 0. 概要 1. Matlab /Simulink/Embedded Coder关系与区别 2. 搭建Simulink模型及仿真 2.1 搭建模型 2.2 仿真 3. 生成代码 3.1 求解器设 ...

  6. Matlab生成stm32代码

    文章目录 一.整体思路 二.开发环境 1.安装Matlab 2.安装STM32硬件支持包 3.安装STM32CUBEMX 4.安装KEIL或者IAR等IDE 三.STM32硬件资源配置 1.打开STM ...

  7. C++包扩展_利用 MATLAB Coder 将M代码生成C/C++代码

    利用MATLAB Coder将MATLAB代码生成C/C++代码​mp.weixin.qq.com MATLAB Coder 可以将MATLAB代码生成工程中常用的嵌入式或其他硬件平台的C或者C++代 ...

  8. 使用 MATLAB Coder App生成MEX函数

    目录 使用 MATLAB Coder App 生成 MEX 函数的工作流 使用 MATLAB Coder App 生成 MEX 函数 配置工程设置 编译 MATLAB Coder 工程 使用 MATL ...

  9. 使用MATLAB Coder将工具箱中的系统对象转换为C代码

    使用MATLAB Coder将工具箱中的系统对象转换为C代码 现在你一个脚本文件,这个文件是个完整的程序,有输入也有输出,运行这个脚本文件会得到你想要的结果.在这个文件里你使用了某个工具箱中的系统对象 ...

  10. matlab如何将代码生成模型,为模型生成 C 代码

    为模型生成 C 代码 要从 Simulink® 模型.Stateflow® 图和 MATLAB® 函数生成 C 或 C++ 代码,请使用 Simulink Coder™ 产品.将生成的代码用于仿真加速 ...

最新文章

  1. 对于装饰器Decorator的理解
  2. PHP带重试功能的curl
  3. PyQt5 技术篇-scrollArea不显示滚动条解决方法,Qt Designer不显示滚动条,滚动条的显示和隐藏
  4. Facebook首席工程负责人胡鲁辉:数字化2.0的理念、架构与业务模型丨鲸犀峰会
  5. 【数据结构-学习路线】博文导航与思维导图(计算机考研+期末考试===> 一步到位)
  6. SAP UI5 different cache results
  7. c++中多线程传递参数原理分析
  8. c++ 检查缓冲大小与记录大小是否匹配_后端程序员不得不会的 Nginx 转发匹配规则...
  9. [js] js操作节点的方法有哪些?
  10. Linux内核中TCP协议实现的关键数据结构
  11. (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  12. Java开源CMS系统
  13. PCIe学习(一):PCIe基础及生成PIO例程分析
  14. C语言strtok_r和strtok使用方法
  15. 转 android8.0通知栏适配
  16. 运行github上下载的vue项目
  17. 移动通信第三章,组网技术基础
  18. suse linux启用80端口,SuSE Linux防火墙配置
  19. ARouter 源码解析(零) 基本使用
  20. python自定义函数实例计算1-n的偶偶数和_Python入门--11--自定义函数

热门文章

  1. 帝国cms二次开发留言板自定义字段教程
  2. mysql5.6.39免安装,win7 64位配置mysql 5.6免安装版,初始化配置和Mysql创建新用户方
  3. 《第一行代码——Android》封面诞生记
  4. linux下dbf是什么文件,dbf是什么文件?dbf文件怎么读取
  5. android 输入法下一步,Android Edittext 软键盘输入法回车键改成下一步Next
  6. 英语单词常用前缀(21-40)
  7. 去除CSDN 博客页广告的历程
  8. 堪萨斯州立大学 计算机科学,堪萨斯州立大学
  9. Java常用日志框架介绍(转载)
  10. 计算机辅助翻译和机器翻译的区别,计算机辅助翻译和机器翻译有何区别?