opencv 暴力线性查找,kmeans查找,LSH查找
来源:互联网 发布:js点击显示更多 编辑:程序博客网 时间:2024/04/29 16:24
opencv 暴力线性查找,kmeans查找与LSH查找测试。
#include <stdio.h>#include <sys/time.h>#include <iostream>#include "opencv2/opencv.hpp"using namespace std;using namespace cv;inline timeval cpu_time(){ timeval t1; gettimeofday(&t1,NULL); return t1;}inline double cost_time(timeval t1,timeval t2){ double t = 1000*(t2.tv_sec-t1.tv_sec)+(t2.tv_usec-t1.tv_usec)/1000; return t;}void generate_data(Mat& data){ int DIM = 1024; int samples = 50000; RNG rng((unsigned int)time(NULL)); //generate data randomly data.create(samples,DIM,CV_32FC1); Point center; center.x = rng.uniform(0,data.cols); center.y = rng.uniform(0, data.rows); rng.fill(data, RNG::NORMAL, Scalar(center.x,center.y), Scalar(data.cols*0.05,data.rows*0.05)); //cout<<data<<endl; //data.convertTo(data,CV_32FC1);}//lsh need data type:CV_8Uvoid lsh_search(const Mat& data,const Mat& point, Mat& indices, Mat& dists, const int k){ timeval t1,t2; cout<<"Begin build LSHindex: "<<endl; // t1 = cpu_time(); flann::Index flannIndex(data,flann::LshIndexParams(10,20,2),cvflann::FLANN_DIST_EUCLIDEAN); flannIndex.save("lshIndex.xml"); // t2 = cpu_time(); cout<<"Finish build LSHindex: \n";//<<cost_time(t1,t2)<<"ms"<<endl; t1 = cpu_time(); flannIndex.knnSearch(point, indices, dists, k,flann::SearchParams(64)); t2 = cpu_time(); cout<<"Finish lshSearch: "<<cost_time(t1,t2)<<"ms"<<endl;}//linear need data type: CV_32FC1void linear_search(const Mat& data,const Mat& point, Mat& indices, Mat& dists, const int k){ //data.convertTo(data,CV_32FC1); timeval t1,t2; flann::Index flannIndex(data,flann::LinearIndexParams(),cvflann::FLANN_DIST_EUCLIDEAN); t1 = cpu_time(); cout<<"Begin LinearSearch: "<<endl; flannIndex.knnSearch(point, indices, dists, k, flann::SearchParams(64)); t2 = cpu_time(); cout<<"Finish linearSearch: "<<cost_time(t1,t2)<<"ms"<<endl;}//kmeans need data type CV_32FC1void kmeans_search(const Mat& data,const Mat& point, Mat& indices, Mat& dists, const int k){ timeval t1,t2; cout<<"Begin build kmeansIndex "<<endl; flann::Index flannIndex(data,flann::KMeansIndexParams(64,-1),cvflann::FLANN_DIST_EUCLIDEAN); cout<<"Finish build kmeansIndex"<<endl; t1 = cpu_time(); cout<<"Begin KmeansSearch: "<<endl; flannIndex.knnSearch(point, indices, dists, k, flann::SearchParams(64)); t2 = cpu_time(); cout<<"Finish KmeansSearch: "<<cost_time(t1,t2)<<"ms"<<endl;}int main(){ //Mat data = generate_data(); Mat data; generate_data(data); int k = 5;//knn Mat indices(1,k,CV_32SC1); Mat point = data.row(1).clone()+0.1; Mat dists(point.rows,k,CV_64FC1); linear_search(data,point,indices,dists,k); cout<<indices<<endl; cout<<dists<<endl; kmeans_search(data,point,indices,dists,k); cout<<indices<<endl; cout<<dists<<endl; data.convertTo(data,CV_8U); point.convertTo(point,CV_8U); lsh_search(data,point,indices,dists,k); cout<<indices<<endl; cout<<dists<<endl; return 0;}
0 0
- opencv 暴力线性查找,kmeans查找,LSH查找
- LSH相似网页查找
- 线性查找
- 线性查找
- 线性查找
- 线性查找
- 线性查找
- 线性查找
- 线性查找
- 线性查找和折半查找
- 9.2 线性查找(顺序查找)
- 数据结构_8:查找:线性查找
- 查找----线性表的查找
- Java查找算法--线性查找
- 算法:暴力字符串查找
- 暴力子字符串查找
- 暴力字符串查找
- 查找
- 【Java知识点总结】 final关键字与抽象类
- 如何查找国际会议信息的总结
- 基于Qt的类QQ气泡聊天的界面开发(二)
- 强叔拍案惊奇 出差员工使用手机通过L2TP over IPSec接入总部
- 最全的Mac OS X【快捷键组合】汇总
- opencv 暴力线性查找,kmeans查找,LSH查找
- OpenWrt的主Makefile过程
- TimeHuan
- IOS TextField用法
- ajax请求json数据最后带冒号
- 关键字const有什么含意?
- Linux makefile 教程
- 肖鑫铭:美元连跌局面惨淡,消息利好金银反攻
- UUID做主键,好还是不好?这是个问题。