我正在尝试在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)
答案 0 :(得分:2)
问题在于内存复制的方向。您正在调用upload
而不是download
函数来将描述符从设备复制到主机。以下行是罪魁祸首:
descriptors.upload(desc_cpu);
将其替换为:
descriptors.download(desc_cpu);
upload
从主机复制到设备,而download
从设备复制到主机。
我已经在Ubuntu 14.04上使用CUDA 8编译的OpenCV 3.4测试并验证了该示例。