使用MinGW编译Efficient graph-based image segmentation

18 篇文章 0 订阅
9 篇文章 0 订阅

1. 首先下载MinGW-w64[1],一路安装下来,并不知道是否设置了环境变量:


编写一个简单的程序实验一下,同时用cmd命令重新开了一个窗口,也可以运行出结果:


2. 编译Efficient graph-based image segmentation

根据其提供的Makefile:

INCDIR = -I.
DBG    = -g
OPT    = -O3
CPP    = g++
CFLAGS = $(DBG) $(OPT) $(INCDIR)
LINK   = -lm 

.cpp.o:
	$(CPP) $(CFLAGS) -c $< -o $@

all: segment

segment: segment.cpp segment-image.h segment-graph.h disjoint-set.h
	$(CPP) $(CFLAGS) -o segment segment.cpp $(LINK)

clean:
	/bin/rm -f segment *.o

clean-all: clean
	/bin/rm -f *~ 
在mingw-w64打开的窗口中编译,会出现下面的错误,其中g++的参数命令意义参考[3]


而打开segment-image.h中引用了头文件<cstdlib>,但根据[2]中该头文件里面只定义了rand随机数,并没有定义random,不知道这个是否在Linux下就有呢?所以需要在segment-image.h中将random换成rand。然后再次编译就成功了。

但这一次如果将这个segment.exe拖到cmd的窗口里面就出现了下面的错误,这个就说明刚才的MinGW安装并没有全局添加环境变量,临时的环境变量添加参考[4]


3. 在Matlab调用的代码:

prefix = num2str(floor(rand(1)*10000000));
fn1 = ['./tmpim' prefix '.ppm'];
fn2 = ['./tmpimsp' prefix '.ppm'];
setenv('PATH', [getenv('PATH') ';D:\Programs\mingw-w64\i686-5.2.0-posix-dwarf-rt_v4-rev0\mingw32\bin']);
segcmd = 'E:\code\download\segment\segment 0.8 100 100';

imwrite(im, fn1);
system([segcmd ' ' fn1 ' ' fn2]);



参考:

【1】http://sourceforge.net/projects/mingw-w64/

【2】http://www.cplusplus.com/reference/cstdlib/

【3】GCC/G++编译参数含义 http://blog.csdn.net/zhuxiaoyang2000/article/details/5575194

【4】MinGw以及临时加路径 http://blog.csdn.net/lsxpu/article/details/43228607

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值