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

检查python cv2中分类器对象的类型?,python,opencv,typechecking,Python,Opencv,Typechecking,我如何检查是否有cv2.CascadeClassifier对象 Atm,如果我用错误的路径运行它,它不会让我知道,并且会给我无用的结果。所以我想要这个检查,但不知道正确的调用/语法 输入: cascadePath=“correctPath.xml” Try1: if type(trainedCascade) is not 'cv2.CascadeClassifier': print(type(trainedCascade)) raise Exception("no

我如何检查是否有
cv2.CascadeClassifier
对象 Atm,如果我用错误的路径运行它,它不会让我知道,并且会给我无用的结果。所以我想要这个检查,但不知道正确的调用/语法

输入:
cascadePath=“correctPath.xml”

Try1:

if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")
Result1:

if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")

异常:在此路径未找到分类器

Try2:

if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")
结果2:
异常:在此路径未找到分类器

Try3:

if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")
结果3:

if type(trainedCascade) is not 'cv2.CascadeClassifier':
        print(type(trainedCascade))
        raise Exception("no classifier found at this path")
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
    raise Exception("no classifier found at this path")
  if cv2.CascadeClassifier.empty():
        print("trained cascade is empty!")
AttributeError:'builtin\u function\u或\u method'对象没有属性“empty”

您几乎做到了:

if not isinstance(trainedCascade, cv2.CascadeClassifier):
更新:如果获取的
类型错误:isinstance()arg 2必须是一个类..
,这意味着
cv2.CascadeClassifier
不是一个类,但可能是某种工厂函数。根据它的不透明程度,您可能无法检查返回的类型。你可以试试:

if trainedCascade.empty():
你就快到了:

if not isinstance(trainedCascade, cv2.CascadeClassifier):
更新:如果获取的
类型错误:isinstance()arg 2必须是一个类..
,这意味着
cv2.CascadeClassifier
不是一个类,但可能是某种工厂函数。根据它的不透明程度,您可能无法检查返回的类型。你可以试试:

if trainedCascade.empty():

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

if isinstance(object, class):
如果出现错误
TypeError:isinstance()arg 2必须是类、类型或类和类型的元组,可以尝试:

if isinstance(trainedCascade, type(cv2.CascadeClassifier())):

这样,您就可以构造所需类型的对象,然后对照目标对象进行检查。

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

if isinstance(object, class):
如果出现错误
TypeError:isinstance()arg 2必须是类、类型或类和类型的元组,可以尝试:

if isinstance(trainedCascade, type(cv2.CascadeClassifier())):

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

我也尝试过。但是问题越来越长,所以我没有把它包括进去。但是当我尝试这样做时,我得到:
TypeError:isinstance()arg 2必须是类、类型或类和类型的元组
我也尝试过。但是问题越来越长,所以我没有把它包括进去。但是当我尝试这样做时,我得到:
TypeError:isinstance()arg 2必须是类、类型或类和类型的元组