如何检查在openCV 2中是否有cv2.CascadeClassifier
对象
自动取款机,如果我用错误的路径运行它,它不会让我知道,并且会给我不好的结果。所以我想要这个检查,但是不知道正确的调用/语法。
输入: cascadePath = "correctPath.xml"
# load the trained cascade
print("loading classifier...")
trainedCascade = cv2.CascadeClassifier(cascadePath)
Try1:
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:
if not isinstance(trainedCascade, type(cv2.CascadeClassifier)):
raise Exception("no classifier found at this path")
Result2: Exception: no classifier found at this path
的Try3
if cv2.CascadeClassifier.empty():
print("trained cascade is empty!")
Result3:
AttributeError: 'builtin_function_or_method' object has no attribute 'empty'
发布于 2015-11-16 14:36:37
你就快成功了:
if not isinstance(trainedCascade, cv2.CascadeClassifier):
更新:如果你得到的是TypeError: isinstance() arg 2 must be a class..
,那就意味着cv2.CascadeClassifier
不是一个类,而可能是某种工厂函数。根据它的不透明性,您可能无法检查返回的类型。您可以尝试:
if trainedCascade.empty():
发布于 2016-12-09 04:01:46
我也面临着同样的问题。正如@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())):
这样,您可以构造一个所需类型的对象,然后根据目标对象对其进行检查。
https://stackoverflow.com/questions/33729482
复制相似问题