检查 python cv2 中分类器对象的类型?
check type of classifier object in python cv2?
如何检查 openCV 2 中是否有 cv2.CascadeClassifier
对象?
Atm,如果我 运行 它的路径错误,它不会让我知道并且会给我无效的结果。所以我想要这张支票,但不知道正确的 call/syntax.
输入:
cascadePath = "correctPath.xml"
# load the trained cascade
print("loading classifier...")
trainedCascade = cv2.CascadeClassifier(cascadePath)
试一试:
if type(trainedCascade) is not 'cv2.CascadeClassifier':
print(type(trainedCascade))
raise Exception("no classifier found at this path")
结果 1:
<type 'cv2.CascadeClassifier'>
Exception: no classifier found at this path
尝试2:
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
raise Exception("no classifier found at this path")
结果 2:
Exception: no classifier found at this path
尝试3 empty() method:
if cv2.CascadeClassifier.empty():
print("trained cascade is empty!")
结果 3:
AttributeError: 'builtin_function_or_method' object has no attribute 'empty'
你快完成了:
if not isinstance(trainedCascade, cv2.CascadeClassifier):
更新: 如果你得到 TypeError: isinstance() arg 2 must be a class..
,这意味着 cv2.CascadeClassifier
不是 class,但可能是某种工厂函数.根据它的不透明程度,您可能无法检查返回的类型。你可以试试:
if trainedCascade.empty():
我遇到了同样的问题。正如@thebjorn 所说,您可以使用
if isinstance(object, class):
如果您收到错误 TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
,您可以尝试:
if isinstance(trainedCascade, type(cv2.CascadeClassifier())):
这样你就可以构造一个所需类型的对象,然后将它与你的目标对象进行检查。
如何检查 openCV 2 中是否有 cv2.CascadeClassifier
对象?
Atm,如果我 运行 它的路径错误,它不会让我知道并且会给我无效的结果。所以我想要这张支票,但不知道正确的 call/syntax.
输入:
cascadePath = "correctPath.xml"
# load the trained cascade
print("loading classifier...")
trainedCascade = cv2.CascadeClassifier(cascadePath)
试一试:
if type(trainedCascade) is not 'cv2.CascadeClassifier':
print(type(trainedCascade))
raise Exception("no classifier found at this path")
结果 1:
<type 'cv2.CascadeClassifier'>
Exception: no classifier found at this path
尝试2:
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
raise Exception("no classifier found at this path")
结果 2:
Exception: no classifier found at this path
尝试3 empty() method:
if cv2.CascadeClassifier.empty():
print("trained cascade is empty!")
结果 3:
AttributeError: 'builtin_function_or_method' object has no attribute 'empty'
你快完成了:
if not isinstance(trainedCascade, cv2.CascadeClassifier):
更新: 如果你得到 TypeError: isinstance() arg 2 must be a class..
,这意味着 cv2.CascadeClassifier
不是 class,但可能是某种工厂函数.根据它的不透明程度,您可能无法检查返回的类型。你可以试试:
if trainedCascade.empty():
我遇到了同样的问题。正如@thebjorn 所说,您可以使用
if isinstance(object, class):
如果您收到错误 TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
,您可以尝试:
if isinstance(trainedCascade, type(cv2.CascadeClassifier())):
这样你就可以构造一个所需类型的对象,然后将它与你的目标对象进行检查。