Matlab coder生成C++代码
Matlab coder生成C++代码 VS环境下运行
- 背景介绍
- Matlab脚本生成
- 测试代码
- Image Region Analyzer
- 函数封装
- Matlab Coder
- 总结
背景介绍
本次使用Matlab工具Matlab coder 将Matlab下开发的代码转化为C++环境下代码,用于后续项目的开发,本次只是做一个简单的过程记录,内容仅供参考,有错误之处还望指出。
Matlab脚本生成
在图像处理的过程中,我们需要对识别对象的一些特征进行分析与处理,本次使用Matlab工具集中的Image Region Analyzer用于特征的分析与处理:
在这里我们使用一个测试图片
首先我们需要对这张图片进行一些处理,虽然这张图看上去只有黑白两色,但其本质是三通道的彩图需要将其转化为灰度图进行后续的处理。在Matlab中处理过程如下:
- 图片信息读取 ;
- rgb2gray 彩图转灰度(如是灰度图该步可省略);
- imbinarize 二值化;
- 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++代码相关推荐
- MATLAB/SIMULINK生成嵌入式代码的步骤
昨天参加了Mathworks公司在东南大学举办的关于MATLAB的培训,内容是关于MATLAB/SIMULINK的嵌入式代码生成以及物理建模,在这里把代码生成的步骤及一些相关内容总结一下. 嵌入式代码 ...
- Matlab笔记:Matlab function生成C代码并运行
1.Matlab函数,输入(x,y,z,roll,pitch,yaw),输出out为8×6的数组 2.点击Matlab coder 3.选择要生成的函数 4.定义输入类型,输入的六个数选择double ...
- 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法:检查MATLAB代码的 ...
- 基于MATLAB Coder将matlab代码转换成C代码
MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码.本文基于matlab2015a编制,但是也适用于matlab 2014~2016的版本. 1. 使用MATL ...
- Matlab/Simulink自动生成C代码实验
目录 0. 概要 1. Matlab /Simulink/Embedded Coder关系与区别 2. 搭建Simulink模型及仿真 2.1 搭建模型 2.2 仿真 3. 生成代码 3.1 求解器设 ...
- Matlab生成stm32代码
文章目录 一.整体思路 二.开发环境 1.安装Matlab 2.安装STM32硬件支持包 3.安装STM32CUBEMX 4.安装KEIL或者IAR等IDE 三.STM32硬件资源配置 1.打开STM ...
- C++包扩展_利用 MATLAB Coder 将M代码生成C/C++代码
利用MATLAB Coder将MATLAB代码生成C/C++代码mp.weixin.qq.com MATLAB Coder 可以将MATLAB代码生成工程中常用的嵌入式或其他硬件平台的C或者C++代 ...
- 使用 MATLAB Coder App生成MEX函数
目录 使用 MATLAB Coder App 生成 MEX 函数的工作流 使用 MATLAB Coder App 生成 MEX 函数 配置工程设置 编译 MATLAB Coder 工程 使用 MATL ...
- 使用MATLAB Coder将工具箱中的系统对象转换为C代码
使用MATLAB Coder将工具箱中的系统对象转换为C代码 现在你一个脚本文件,这个文件是个完整的程序,有输入也有输出,运行这个脚本文件会得到你想要的结果.在这个文件里你使用了某个工具箱中的系统对象 ...
- matlab如何将代码生成模型,为模型生成 C 代码
为模型生成 C 代码 要从 Simulink® 模型.Stateflow® 图和 MATLAB® 函数生成 C 或 C++ 代码,请使用 Simulink Coder™ 产品.将生成的代码用于仿真加速 ...
最新文章
- 对于装饰器Decorator的理解
- PHP带重试功能的curl
- PyQt5 技术篇-scrollArea不显示滚动条解决方法,Qt Designer不显示滚动条,滚动条的显示和隐藏
- Facebook首席工程负责人胡鲁辉:数字化2.0的理念、架构与业务模型丨鲸犀峰会
- 【数据结构-学习路线】博文导航与思维导图(计算机考研+期末考试===> 一步到位)
- SAP UI5 different cache results
- c++中多线程传递参数原理分析
- c++ 检查缓冲大小与记录大小是否匹配_后端程序员不得不会的 Nginx 转发匹配规则...
- [js] js操作节点的方法有哪些?
- Linux内核中TCP协议实现的关键数据结构
- (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
- Java开源CMS系统
- PCIe学习(一):PCIe基础及生成PIO例程分析
- C语言strtok_r和strtok使用方法
- 转 android8.0通知栏适配
- 运行github上下载的vue项目
- 移动通信第三章,组网技术基础
- suse linux启用80端口,SuSE Linux防火墙配置
- ARouter 源码解析(零) 基本使用
- python自定义函数实例计算1-n的偶偶数和_Python入门--11--自定义函数
热门文章
- 帝国cms二次开发留言板自定义字段教程
- mysql5.6.39免安装,win7 64位配置mysql 5.6免安装版,初始化配置和Mysql创建新用户方
- 《第一行代码——Android》封面诞生记
- linux下dbf是什么文件,dbf是什么文件?dbf文件怎么读取
- android 输入法下一步,Android Edittext 软键盘输入法回车键改成下一步Next
- 英语单词常用前缀(21-40)
- 去除CSDN 博客页广告的历程
- 堪萨斯州立大学 计算机科学,堪萨斯州立大学
- Java常用日志框架介绍(转载)
- 计算机辅助翻译和机器翻译的区别,计算机辅助翻译和机器翻译有何区别?