gpt4 book ai didi

opencv - 如何从gpuHog获取描述符?

转载 作者:行者123 更新时间:2023-12-02 16:30:44 25 4
gpt4 key购买 nike

我使用的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));

我的问题是如何使用GPU获得“描述符”?

我尝试了以下代码。 (无效)
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”中获取“descriptor”?

谁能帮我解决这个问题?非常感谢!

最佳答案

您可以使用gpu_descriptors memeber函数gpu::GpuMatdownload()下载到CPU内存中,如下所示:

Mat cpu_descriptors; 
gpu_descriptors.download(cpu_descriptors);

但是,描述符在GPU上的存储方式与在CPU上的存储方式可能不同,也就是说 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>格式。

关于opencv - 如何从gpuHog获取描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com