Cuda ORB描述符Opencv

时间:2018-01-19 08:21:10

标签: c++ opencv image-processing

我正在尝试在CUDA上使用OpenCV进行功能匹配算法。 我正在使用ORB功能。 我遇到的主要问题是我能够很好地计算ORB关键点,但描述符总是空的。我尝试了所有的方法但没有成功。我尝试使用最新版本的opencv(3.4.0)和3.2.0版本。 这是我的代码的简化版本:

class Main(Widget):
    def __init__(self):
        super().__init__()
        self.layout = BoxLayout()
        button = Button()
        button.bind(on_press=self.remove_layout)
        self.layout.add_widget(button)
        self.add_widget(self.layout)

    def remove_layout(self, *ignore):
        self.remove_widget(self.layout)

1 个答案:

答案 0 :(得分:2)

问题在于内存复制的方向。您正在调用upload而不是download函数来将描述符从设备复制到主机。以下行是罪魁祸首:

descriptors.upload(desc_cpu);

将其替换为:

descriptors.download(desc_cpu);

upload从主机复制到设备,而download从设备复制到主机。

我已经在Ubuntu 14.04上使用CUDA 8编译的OpenCV 3.4测试并验证了该示例。