OpenCV角点检测器测试和比较
来源:互联网 发布:网络电视选择哪个信源 编辑:程序博客网 时间:2024/05/22 12:55
关于特征检测,OpenCV提供了通用的接口FeatureDetector
类。简单调用其成员函数create()
和detect()
即可完成角点检测。
选取8个以角点为特征的特征检测器进行测试,包括:
- HARRIS
- GFTT (Shi-tomasi)
- SIFT
- SURF
- FAST
- STAR
- ORB (oriented BRIEF)
- BRISK
测试代码
#include <stdio.h>#include <iostream>#include "opencv2/core/core.hpp"#include "opencv2/features2d/features2d.hpp"#include "opencv2/nonfree/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/nonfree/nonfree.hpp"using namespace cv;using namespace std;int main(){ string imgPath = "road.jpg"; Mat img = imread(imgPath, CV_LOAD_IMAGE_COLOR); vector<string> detectorNames{"HARRIS","GFTT","SIFT", "SURF","FAST","STAR","ORB","BRISK"}; cout << "DetectorName" << '\t' << "Number of corners" << '\t' << "Time used" <<'\t'<<"efficiency" << endl << endl; for (string detectorName:detectorNames) { cout <<detectorName<<+"\t\t"; double t = (double)getTickCount(); //--detect keypoints Ptr<FeatureDetector> detector = FeatureDetector::create(detectorName); vector<KeyPoint> keyPoints; detector->detect(img, keyPoints, Mat()); cout << keyPoints.size() << "\t\t\t"; //--draw keypoints Mat imgKeyPoints; drawKeypoints(img, keyPoints, imgKeyPoints, Scalar::all(-1), DrawMatchesFlags::DEFAULT); imshow(detectorName+" KeyPoints", imgKeyPoints); //time used t = ((double)getTickCount() - t) / getTickFrequency(); cout << t << "\t"; //Number of coners detected per unit time(ms) double efficiency = keyPoints.size() / t / 1000; cout << efficiency << endl<<endl; } waitKey(0); return 0;}
运行结果
HARRIS
GFTT
SIFT
SURF
FAST
STAR
ORB
BRISK
比较
可以看出,FAST特征检测算法的检测速度是超群的,难怪敢自称“FAST”。从特征点检测效率以及检测出的特征点数来看,SURF表现也不错。以上各个角点检测器,使用的都是OpenCV默认的封装,可能会因为具体的参数设置差异,检测出的角点数有不同,可比性没法说明。但是,特征点检测效率还是很客观的。由以上结果得知,检测效率最高的前3个检测器分别为FAST,ORB,SURF。
0 0
- OpenCV角点检测器测试和比较
- Harris角点检测器
- 比较Opencv自带的frontface检测器
- 比较Opencv自带的eye检测器
- dlib 03 dlib自带demo 人脸关键点检测器训练和测试
- 特征检测器-Harris角点检测
- 【OpenCV】特征检测器 FeatureDetector
- 【OpenCV】特征检测器 FeatureDetector
- 【OpenCV】特征检测器 FeatureDetector
- 【OpenCV】特征检测器 FeatureDetector
- 【图像预处理】 Harris角点检测器原理及C++实现
- 【局部图像描述子】Harris角点检测器
- OPENCV中特征点的分类_检测器_描述器
- 安装opencv过程中的一些注意点和测试代码
- Opencv 用SVM训练检测器
- 解决facepp离线检测器so和opencv动态库编译的问题
- harris角检测器
- opencv SVM 训练行人检测器注意事项
- 文章标题
- matlab错误:Variable 'a' cannot be saved to a MAT-file whose version is older than 7.3.
- [kernel] Linux 4.10.0+ 内核编译(Mac10.12+VM+Ubuntu16)
- 自制简单的pe信息查看器
- 斐波那契数列
- OpenCV角点检测器测试和比较
- 九度OJ-1042:Coincidence(最长公共子序列)
- Eclipse-Eclispe导入正确工程后出现xml等文件报错
- jvm系列四:JVM监测&工具
- 利用线性拟合模型发现测试环境性能隐患
- 插入Mysql字段,数据长度过长
- [AHK]探测关闭脚本窗口事件
- python学习(二)函数
- 获取cookie问题