You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将face改为img后遇AttributeError:numpy.ndarray无detectMultiScale属性

为什么会出现'numpy.ndarray' object has no attribute 'detectMultiScale'错误?

这个错误的核心是你搞错了调用detectMultiScale方法的对象:

  • img是OpenCV读取或处理后得到的图像数据,属于numpy数组(numpy.ndarray类型),这类数组本身没有detectMultiScale方法
  • detectMultiScale是OpenCV中级联分类器对象(比如cv2.CascadeClassifier的实例)专属的方法,你之前的代码里应该是用名为face的分类器实例调用这个方法,替换成img就完全不符合语法逻辑了

看你的代码片段,修正步骤很明确:

  1. 先确保你有初始化分类器的代码,比如:face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')(文件路径要对应你本地的级联分类器文件)
  2. 把代码里的img.detectMultiScale改回face.detectMultiScale(如果你的分类器实例名字不是face,就用你自己定义的名称)

修正后的代码示例:

# 初始化人脸级联分类器(路径根据实际情况调整)
face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

col = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 用分类器实例调用detectMultiScale,而非图像数组img
faceDetails = face.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)

内容的提问来源于stack exchange,提问作者Md. Maruf Sarker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:45:34