我使用的CPU版本如下。
vector<float> descriptors;
cv::HOGDescriptor hog(cv::Size(24,32),cv::Size(12,12),cv::Size(4,4),cv::Size(6,6),6);
hog.compute(img, descriptors,cv::Size(8,8), cv::Size(0,0));
cv::gpu::GpuMat gpu_value, gpu_descriptors;
cv::gpu::HOGDescriptor hog_gpu(Size(24,32),Size(12,12),Size(4,4),Size(6,6),6);
gpu_value.upload(img);
hog_gpu.getDescriptors(gpu_value,cv::Size(8,8),gpu_descriptors);
最佳答案
您可以使用gpu_descriptors
memeber函数gpu::GpuMat
将download()
下载到CPU内存中,如下所示:
Mat cpu_descriptors;
gpu_descriptors.download(cpu_descriptors);
cpu_descriptors
可能与上面代码中计算出的descriptors
不完全相同。但是您可以尝试一下。vector<float>
的描述符以gpu::HOGDescriptor
格式下载到CPU内存的方法。附带说明,我知道您可以使用它的成员函数下载 gpu::SURF_GPU
特征检测器的描述符void downloadDescriptors(const GpuMat& descriptorsGPU,
vector<float>& descriptors);
cv::gpu::HOGDescriptor
不存在此功能。您可以尝试找出数据如何以vector<float>
类型的描述符存储,然后尝试从Mat
转换为vector<float>
格式。
https://stackoverflow.com/questions/21168806/