根据图片创建字典,需要安装BoW库

#include “DBoW3/DBoW3.h”
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>
#include < iostream>
#include < vector>
#include < string>

using namespace cv;
using namespace std;

/***************************************************

  • 本节演示了如何根据data/目录下的十张图训练字典
  • ************************************************/

int main( int argc, char** argv ) {
// read the image
cout<<“reading images… “<<endl;
vector< Mat> images;
for ( int i=0; i<10; i++ )
{
string path = “./data/”+to_string(i+1)+”.png”;
images.push_back( imread(path) );
}
// 检测 ORB 特征点
cout<<"detecting ORB features … "<<endl;
Ptr< Feature2D > detector = ORB::create();
vector< Mat> descriptors;
for ( Mat& image:images )
{
vector< KeyPoint> keypoints;
Mat descriptor;
detector->detectAndCompute( image, Mat(), keypoints, descriptor );detectAndCompute()函数同时计算出关键点和描述子
descriptors.push_back( descriptor );
}
//
// create vocabulary
cout<<"creating vocabulary … "<<endl;
DBoW3::Vocabulary vocab;使用字典类,实际中可以指定节点的分支数k和深度d
vocab.create( descriptors );根据描述子创建字典
cout<<"vocabulary info: "<<vocab<<endl;
vocab.save( “vocabulary.yml.gz” );将字典保存为.yml文件
cout<<“done”<<endl;
//
return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值