标签:
最近需要实现一下图像配准的功能, 参考了一下opencv中的实现,发现几个问题, SurfFeaturesFinderGpu在找特征点的过程中会抛出异常,改了一下代码,可以运行了.
void SurfFeaturesFinderGpu::find(InputArray image, ImageFeatures &features) { CV_Assert(image.depth() == CV_8U); Mat imageGray; /*## xie debug*/ #if 1 ensureSizeIsEnough(image.size(), image.type(), image_); image_.upload(image); cvtColor(image, imageGray, COLOR_BGR2GRAY); ensureSizeIsEnough(imageGray.size(), imageGray.type(), gray_image_); gray_image_.upload(imageGray); #else ensureSizeIsEnough(image.size(), image.type(), image_); image_.upload(image); ensureSizeIsEnough(image.size(), CV_8UC1, gray_image_); cvtColor(image_, gray_image_, COLOR_BGR2GRAY); #endif
问题是,用这个CUDA的finder . 结果消耗的时间比不用CUDA要多出几个数量级
下面是不用CUDA的性能数据:
使用了CUDA以后:
寻找特征点的过程从耗时2.42秒升级到231秒. 希望OPENCV的作者可以将这个算法的性能进行改进.
opencv3.0.1 中的SurfFeaturesFinderGpu类的问题.
标签:
原文地址:http://www.cnblogs.com/enigma19971/p/5723413.html