首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python cv2中检查分类器对象的类型?

在python cv2中检查分类器对象的类型?
EN

Stack Overflow用户
提问于 2015-11-16 14:19:28
回答 2查看 790关注 0票数 1

如何检查在openCV 2中是否有cv2.CascadeClassifier对象

自动取款机,如果我用错误的路径运行它,它不会让我知道,并且会给我不好的结果。所以我想要这个检查,但是不知道正确的调用/语法。

输入: cascadePath = "correctPath.xml"

代码语言:javascript
复制
# load the trained cascade
print("loading classifier...")
trainedCascade = cv2.CascadeClassifier(cascadePath)

Try1:

代码语言:javascript
复制
if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")

Result1:

<type 'cv2.CascadeClassifier'>

Exception: no classifier found at this path

Try2:

代码语言:javascript
复制
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")

Result2: Exception: no classifier found at this path

Try3

代码语言:javascript
复制
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")

Result3:

AttributeError: 'builtin_function_or_method' object has no attribute 'empty'

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-16 14:36:37

你就快成功了:

代码语言:javascript
复制
if not isinstance(trainedCascade, cv2.CascadeClassifier):

更新:如果你得到的是TypeError: isinstance() arg 2 must be a class..,那就意味着cv2.CascadeClassifier不是一个类,而可能是某种工厂函数。根据它的不透明性,您可能无法检查返回的类型。您可以尝试:

代码语言:javascript
复制
if trainedCascade.empty():
票数 0
EN

Stack Overflow用户

发布于 2016-12-09 04:01:46

我也面临着同样的问题。正如@thebjorn所说,你可以使用

代码语言:javascript
复制
if isinstance(object, class):

如果您收到错误TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types,您可以尝试:

代码语言:javascript
复制
if isinstance(trainedCascade, type(cv2.CascadeClassifier())):

这样,您可以构造一个所需类型的对象,然后根据目标对象对其进行检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33729482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档