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

2024-06-02 05:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个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中,compute函数接受InputArray,这也可能是UMat。。。你知道吗

现在我被难倒了。我应该把代码中可以使用GPU的变量转换成cv2.UMat(imagefeature_extractor.detect(image)bowsigsvm.predict(bowsig))并且忘记在GPU上计算BOVW特性吗?你知道吗


Tags: 模型imagegpuextractcv2featureextractorsvm