• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

尝试将matlab语言转成c

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    之前使用的一直都是matlab,可是在工程上基本还是用c,所以为了将编好的程序转换成c语言,配合opencv的使用,就发生了今天的matlab转c的尝试。(虽然很想说当初直接用opencv写不就好了,可谁让我当时只会matlab呢先转个试试吧,不行我再去写好了)

    在命令窗口键入mex -setup ,注意,这里的mex后有一个空格,不然就会出现如下提示:

    选择语言之后键入coder回车就会出现转换界面了。

    其实这样好麻烦的说,后来发现我现在用的是matlab2017,应该更早的版本里也有,就是MATLAB coder这个APPS,直接点就行了。

       打开MATLAB coder的APP时出现了一个问题,在某一个文件夹的路径下无法打开,一点击图标就自动运行函数了,而换一个路径就没有问题了。后来发现,原来是因为我为了尝试coder的使用步骤随便捡建了一个草稿,命名就是coder,这样一来可不就是点图标相当于运行程序了么。这个问题还真是要注意,有时起名字不注意就会和matlab中自带的函数重名,这样调用时就会出错,还一时发现不了,最后发现了也是无奈至极

    简单的程序很容易就转换出来了,整体的步骤还是很容易的,跟着指示做就好了。之后要做的就是把自己的单应性矩阵的计算程序进行转换。

    同学说她以前转换一行指令就完成了,用的是mcc,但是在2017里输这行指令时就出现下面这个提示,所以是高版本的不支持了么?求解~~~

    因为我要转换的matlab函数里调用了相机标定的函数,在低版本里应该是没有的才对。好吧,就算是用coder也还是会出现有的函数不支持转化的情况。比如说这个varargin函数就提示说不支持。下面的步骤转化的是我自己的了,因为不确定相机标定函数可不可以转,所以先把归一化和单应性的转了一下


    Numeric Conversion那里还是不要动了,除了none别的都会和程序里的类型冲突。next之后会发现程序里有错的地方,这个程序在matlab里运行是没问题的,这里报错肯定就是和转化过程有关了,它让你怎么改就改一下好了。


    比较麻烦的就是函数不支持,未定义的直接加个定义就好了。我这里把不支持的函数换了一种别的方式表达,直接在这个界面改就可以保存在程序里了。


    据说在程序中写%#codegen是为了检查代码的可转换性,我也象征性的写了一下,但没有看到什么实质作用,毕竟APP里已经有了检查的步骤了。

    下面要加的是运行要转化的function的主函数文件,会显示function里的输入参数类型。很悲催,我想转的的文件function ip=singlecorrect(i1,i2,cameraParams)里cameraparams的输入是个类,matlab可以用,但是不支持转化,所以我在这一步崩溃了看来还要再想点别的办法。



    要是没有那个参数,下一步在检查之后就可以生成了,记得要把生成成功的文件打包,不然太乱了。


    总之,code的用法大概就是这样,我卡在了load数据上,目前时间紧张,找不到好办法了,以后有时间再回来看看怎么能改进一下吧。

    好在还是转好了一部分,剩下的也不难,直接去opencv里编一下,这样可能都比找方法转c快



后续:查了一下,load函数貌似就是不能直接转到c里用,mat文件也要先转成xml/yml也才能调用。。。本以为转好的那部分程序在使用过程中也遇到了问题,matlab里的svd计算在c里不能正常使用,虽然opencv里有它自己svd的计算方法,但是为了避免再遇到奇奇怪怪的bug,最后我还是自己重新编了一整套的opencv计算两幅图像单应性的程序,感觉比转码方便多了。。。珍爱生命,远离转码,该在哪的还是就在哪好了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi XE 10 开发Android用真机调试刷不出来真机的解决办法发布时间:2022-07-18
下一篇:
任意版本MATLAB安装C2000支持包发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap