图像检索服务器编写问题记录——特征库的存储问题

【1】SIFT特征没有自己编写,使用了opencv的SIFT特征提取、匹配函数。

【2】centos6.8装opencv3.0有问题,系统更换成了ubuntu14.04.4。opencv3已将sift库去掉,需要自己在git上下载编译,但是编译出来错误很多,诸多不顺,最终换成了老版本。opencv2.4.9,系统ubuntu14.04.4,很顺利。

【3】opencv特征库的描述子提取出来是cv::Mat类型,对数据库完全不懂如何存储自定义类型,所以使用opencv自带的文件类将Mat写入XML中了。好在整个服务运行的过程中,只是对特征库中的数据进行逐个比对,所以将特征存储在数据库,XML的区别也只是一开始服务器开启时载入数据的速度快慢,并不影响数据查询速度。

【4】所有同类型工作线程都是提取待检测图片的特征描述子,并将该描述子与特征库中所有的描述子逐个比较。所以我把xml中的特征,在服务开启时,就全部载入进来了。做成了全局。

【5】特征库描述子们做成全局,该怎么弄?既不能在函数栈中分配(随着特征库的增加会不会爆栈?)也不想做成全局变量(全局静态区放这么大的数据量好吗?)。最后是使用全局的*const ptr=new FEA()。

const指针,这样指针指向不会发生改变了,可以放心的定义成全局了(大家都看的到,大家都改不了);

FEA(),只提供对特征描述子的值副本,这样特征库描述子大家都看的到,大家都改不了。

new,在堆中分配内存,不会爆栈,不用担心全局静态区放太多的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值