对象“numpy.ndarray”没有属性“detectMultiScale”属性错误

azpvetkf  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(142)

在这里我发现一个错误后,更新它的脸到img.错误说:

INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
0 549 374
1 518 362
2 487 351
3 462 353
4 449 359
5 469 318
6 428 348
7 438 367
8 453 371
9 473 321
10 434 363
11 447 382
12 463 387
13 479 334
14 443 377
15 456 396
16 471 402
17 487 352
18 457 385
19 458 402
20 463 413
Traceback (most recent call last):
  File "/home/maruf/Documents/python/opencv/YouTube/Hand Tracking/basic.py", line 35, in <module>
    faceDetails = img.detectMultiScale(
AttributeError: 'numpy.ndarray' object has no attribute 'detectMultiScale'

Process finished with exit code 1

这是我这部分的源代码:

col = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faceDetails = img.detectMultiScale(
        col,
        scaleFactor=1.1,
        minNeighbors=5,
        minSize=(30, 30),
        flags=cv2.CASCADE_SCALE_IMAGE
    )

for (x, y, w, h) in faceDetails:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

为什么它说错误...“numpy.ndarray”对象没有属性“detectMultiScale”

wljmcqd8

wljmcqd81#

    • 错误原因:**

detectMultiScale确实不是numpy.ndarray的方法,而numpy.ndarray显然是img对象的类型。

    • 解决方案:**

detectMultiScale实际上是opencv CascadeClassifier类的一个方法。
请参阅此处的文档:detectMultiScale.
您的img应该作为detectMultiScale的第一个参数传递(您可以在文档链接中看到其他可选参数)。

    • 注意**为了获得CascadeClassifier对象,您必须从模型文件加载分类器数据。上面的链接提供了一个c++的例子。我相信快速搜索一下就会给你一个python的例子。

相关问题