最新版libvibe++移植到Windows

vibe是一种像素级的前景检测算法,实时性高,内存占有率低,前景检测准确率高。但是会出现“鬼影”,当然基于对鬼影的处理,也会有相应的对vibe算法的改进。
把下面三篇文章看明白,基本就会掌握vibe算法的过程:
《 ViBe: a powerful random technique to estimate the background in video sequences》
《Background Subtraction: Experiments and Improvements for ViBe 》
《ViBe: A universal background subtraction algorithm for video sequences》
该算法的原文链接地址(http://www.telecom.ulg.ac.be/research/vibe/doc2/index.html),作者已经给出了C/C++代码。
但是,根据http://orbi.ulg.ac.be/handle/2268/145853页面的Source code in C++ [NEW from June 2016] - generic template-based implementation - ideal for experimentation - example for OpenCV来看,最新版vibe是在linux下运行的,我最近要在vs2013+opencv+boost环境运行该代码,最初我是将解压得到的****libvibe++\src\libvibe++文件夹添加到了我的系统路径下面,不过没有成功,因为里面好多相对路径,我也不太熟悉,我也就没有在此纠缠,于是就将库里面的所有文件都.c .cpp .t文件全都拷贝到一个文件夹里面(也就是我的VS2013的工作路径),再做以下更改:
1、 .t文件真的是搞不懂,由于文件里是直接用include包含了它,所以我直接将.t文件的内容复制到包含它的文件对应位置;
2、把所有文件里面的相对路径全部去掉,只留文件名部分;
3、文件里面好多STRONG_INLINE,真的搞不懂,也没有找到其定义,于是直接将其替换为inline;
4、ViBe_8UC3.cpp中命名空间ViBe和重定义类型typedef ViBeSequential<3, Manhattan<3> > ViBe冲突了,于是将重定义类型换一个名字就行了(typedef ViBeSequential<3, Manhattan<3> > ViBeclass)
5、类型指示不明确,types.h里面的诸如typedef boost::int8_t int8_t;和标准库里面的stdint.h里面的int8_t重名了,所以我就舍弃了types.h,转而直接用boost::int8_t避免了歧义,其他几个同理。
最终可执行的代码放在了这里http://pan.baidu.com/s/1kVrxpzh,将cpp文件和vibesource文件夹放在同一个目录就可以了。
但是最终的前景提取还有个不足:在第一帧开始后,有鬼影。
当然以上的5点更改并不是唯一的,只是我没有再去尝试其他更改了,比如可以使用stdint.h里面的类型而不是boost的,项目进度跟不上啦啦啦啦啦。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值