SLIC超像素分割MATLAB代码执行时的一些细节

更新:评论区有同学分享了新的代码链接,贴在这里吧:

https://www.epfl.ch/labs/ivrl/research/slic-superpixels/

 

***************************************************   分       割        线    ******************************************************

 

代码网址:http://ivrl.epfl.ch/research/superpixels#SLICO

PS:上面的链接失效了,我搞了个代码托管,附链接:(https://dev.tencent.com/api/project/4901337/files/6063082/download)。

里面的“SLIC_mex.zip”应该是作者官网上下载的。

 

下载了SLIC超像素分割的MATLAB程序:

Mex file and MATLAB demo script

下载解压之后,主程序是“SLICdemo.m”,它会调用C语言程序“slicmex.c”。

所以运行程序的时候,首先通过MATLAB将C/C++函数编译成MEX函数,在MATLAB中就可以调用了。方法是:

MATLAB的command window下输入:

>>mex silcmex.c

会通知你选择编译器:

Select a compiler: 
[1] Microsoft Visual C++ 2010 in d:\ruanjiananzhuang\VS2010UltimTrialCHS 
 
[0] None 

Compiler: 1

输入1,回车,这时就会报出警告和错误,警告不用管,主要解决错误:

slicmex.c(387) : error C2275: “mwSize”: 将此类型用作表达式非法 

......

这个错误是最先出现的最大的错误,先解决它。

用文本编辑器打开文件“slicmex.c”,处理(387)行:

mwSize numdims = mxGetNumberOfDimensions(prhs[0]) ;

改法就是:将numdims的声明和定义拆开:

mwSize numdims;

numdims = mxGetNumberOfDimensions(prhs[0]) ;

再将其声明与(351)行定义的mexFunction函数下面的一大串变量声明放在一起。截图如下:

保存文件,再返回到MATLAB的命令窗口处,重新编译c程序:

>> mex slicmex.c

再运行程序:
>> SLICdemo

 

网上有人给出了原理,我把文字复制过来:

 

地址:http://www.cppblog.com/colorful/archive/2015/02/05/209744.aspx

error C2275: “XXX”: 将此类型用作表达式非法

在移植c++代码到c的时候,经常会出现一个奇怪的错误,
error C2275: “XXX”: 将此类型用作表达式非法
表达式非法,这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部,而c++没有这样的要求造成的。
解决的办法就是把变量的申明全部放在变量的生存块的开始。
 
 
 
 

 

 

 

 

 

 

  • 5
    点赞
  • 8
    评论
  • 21
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值