首页 > 解决方案 > python中的cv2.cuda_CascadeClassifier

问题描述

我正在尝试使用来自 opencv cuda 的 Haarclassifier,为此我找到了对象 cv.cuda_CascadeClassifier。但是,将 cv.cuda_CascadeClassifier() 分配给变量会出现以下错误:

此对象没有“加载”属性。我可以通过打印他们的 dir() print(dir(cv.cuda_CascadeClassifier)) 来成功验证它。

有没有其他方法可以调用这个对象,或者有没有人有效地利用 opencv cuda 的级联分类器?

谢谢

标签: pythonopencvcascade-classifier

解决方案


缺少 python API 的文档真的很痛苦。说到 OpenCV 4.5 版本,你必须create在读取 xml 级联文件时调用该方法,否则在尝试检测时会产生分段错误。根据我的经验,您还需要转换为灰度,否则会产生(-215:Assertion failed) src.type() == CV_8UC1.

这是我在 OpenCV 4.5.1 上的工作代码:

import cv2

img = cv2.imread('./img_sample.jpg')
cascade = cv2.cuda_CascadeClassifier.create('./cascade_file.xml')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cuFrame = cv2.cuda_GpuMat(gray_img)
result = cascade.detectMultiScale(cuFrame).download() # download() gets the result as UMat

if result is not None:
    print(result[0])

我希望这能回答您关于 cuda 版本使用的问题。


推荐阅读