opencv gpuKnnMatch
来源:互联网 发布:jade 知乎 编辑:程序博客网 时间:2024/05/16 19:21
opencv knnMatch 与 gpuKnnMatch性能比较,不同设备测试效果不同,在我的tesla和i7上测试gpu平均加速3倍。KnnMatch在前面的博文中已有代码
#include<iostream>#include<sys/time.h>#include"opencv2/gpu/gpu.hpp"#include"opencv2/opencv.hpp"using namespace std;using namespace cv;using namespace cv::gpu;const int samples = 50000;const int DIM = 1024;const int k = 10;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){ 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; }int main(){ //CPU mat Mat data, query; generate_data(data); query = data.row(10).clone(); //copy to GPU GpuMat g_data, g_query; g_data.upload(data); g_query.upload(query); CV_Assert(!g_data.empty()); CV_Assert(!g_query.empty()); cv::gpu::printShortCudaDeviceInfo(cv::gpu::getDevice()); timeval t1,t2; t1 = cpu_time(); // match GpuMat g_trainIdx, g_distance, g_all; BFMatcher_GPU matcher(NORM_L2); matcher.knnMatchSingle(g_query, g_data, g_trainIdx,g_distance, g_all, k); t2 = cpu_time(); cout<<cost_time(t1,t2)<<"ms"<<endl; //download Mat trainIdx, distance, all; g_trainIdx.download(trainIdx); g_distance.download(distance); g_all.download(all); g_query.download(query); g_data.download(data); vector<DMatch> matches; BFMatcher_GPU::matchDownload(g_trainIdx,g_distance,matches); cout<<trainIdx<<endl; cout<<distance<<endl; return 0;}
0 0
- opencv gpuKnnMatch
- opencv
- openCV
- openCV
- Opencv
- opencv
- opencv
- opencv
- OpenCV
- OpenCV
- OpenCV
- OpenCV
- opencv
- Opencv。。
- OpenCV
- opencv
- opencv
- opencv
- IOS 如何选择delegate、notification、KVO?
- ACM-三个数从小到大排序
- epoll
- vim 添加PHP函数自动补全
- Android菜单详解(四)——使用上下文菜单ContextMenu
- opencv gpuKnnMatch
- 我是菜鸟:面向对象的理解
- BZOJ2434【AC自动机】
- 【沈阳车房贷】撕开股市的神秘面纱 一切交给我
- Mysql建表与索引使用规范整理
- LTE常规测试信道
- Linux当前时间
- jQuery:事件发生的顺序
- 图文解释XCode常用快捷键的使用