如何在ML模型(Python OpenCV)中正确使用UMat?

时间:2018-10-19 13:46:10

标签: python opencv gpu

我正在尝试创建一个由GPU驱动的BOVW模型,该模型使用KAZE描述符和SVM模型对对象进行分类。但是我遇到了一个我无法解决的错误,并且我在文档中没有找到任何有关它的信息。

更具体地说,我正在加载图像,提取KAZE描述符,使用BOVW模型提取聚簇索引并将其传递给SVM模型。

image = cv2.imread('/path/to/image.jpg')
image = cv2.UMat(image)

# feature_extractor = cv2.KAZE_create
# bow_extract = cv2.BOWImgDescriptorExtractor, pretrained
# svm = cv2.ml.SVM_create(), pretrained

kp = feature_extractor.detect(image)
bowsig = bow_extract.compute(image=image, keypoints=kp)
prediction = svm.predict(bowsig)

错误发生在bow_extract.compute(image=image, keypoints=kp)中:

TypeError: image is not a numpy array, neither a scalar

现在,在docs for cv2.BOWImgDescriptorExtractor中,计算函数接受InputArray,它也可以是UMat ...

现在我很困惑。我是否应该将可以在我的代码中使用GPU的变量转换为cv2.UMat(image中的feature_extractor.detect(image)bowsig中的svm.predict(bowsig)),而忘记在GPU上计算BOVW功能?

0 个答案:

没有答案