无法获得所需的掩码检测输出

Posted

技术标签:

【中文标题】无法获得所需的掩码检测输出【英文标题】:Unable to get the desired output for mask detection 【发布时间】:2021-10-04 00:02:46 【问题描述】:

我正在使用 python 和 Open-cv 库进行面罩检测的迷你项目,我已经编写了正确的代码,但是在运行代码以生成实时输出时仍然会抛出很多错误。下面是通过网络摄像头生成输出的代码。请帮我解决这个错误。

haar_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
capture = cv2.VideoCapture(1)
data = []
font = cv2.FONT_HERSHEY_COMPLEX
while True:
    flag, img = capture.read()
    if flag:
        faces = haar_data.detectMultiScale(img)
        for x,y,w,h in faces:
            cv2.rectangle(img,(x,y), (x+w, y+h), (255,0,255), 4)
            face = img[y:y+h, x:x+h, :]
            face = cv2.resize(face, (50,50))
            face = face.reshape(1,-1)
            pred = svm.predict(face)[0]
            n = names[int(pred)]
            cv2.putText(img, n, (x,y), font, 1, (244,250,250), 2)
            print(n)
        cv2.imshow('result',img)
        if cv2.waitKey(2) == 27:
            break
capture.release()
cv2.destroyAllWindows() 

下面是它显示的错误,并且视频在获得输出时卡住了,我不得不强行关闭程序,因为内核正在死去。 这个项目是在 jupyter notebook 中完成的。我什至得到了 91% 的准确率,但无法得到输出。

NameError                                 Traceback (most recent call last)
<ipython-input-1-ad01d854464f> in <module>
----> 1 haar_data = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
      2 capture = cv2.VideoCapture(1)
      3 data = []
      4 font = cv2.FONT_HERSHEY_COMPLEX
      5 while True:

NameError: name 'cv2' is not defined

【问题讨论】:

【参考方案1】:

你确定你导入了 OpenCV 库吗?

import cv2

【讨论】:

好的,然后检查库是否安装,可以使用pip list命令。如果没有,请使用 pip 或 conda 安装它(这取决于您使用的是什么)。此外,如果您使用虚拟环境(如 Conda 或 Virtualenv),请检查笔记本是否从该环境启动。 我已经检查并再试了一次,但现在它抛出了一个不同的错误,说明 svm 没有定义,即使我已经定义了它NameError Traceback(最近一次调用) 在 11 face = cv2.resize(face, (50,50)) 12 face = face.reshape(1,-1) ---> 13 pred = svm.predict(face)[0] 14 n = names[int(pred)] 15 cv2.putText(img, n, (x,y), font, 1, (244,250,250), 2) NameError: name 'svm' is not defined 当你得到类似'NameError: name '...' is not defined',这意味着模块对python解释器不可见(该库尚未安装或找不到)。检查 pip list 是否已安装 scikit-learn 或使用 pip install -U scikit-learn。提示:您可以尝试使用 Colab (colab.research.google.com/notebooks/…) 代替 Jupyter。在 Google Colaboratory (Colab) 中已经预装了许多库,您应该没有任何问题。 请你帮我解决这个项目,因为我时不时地在输出代码中遇到错误。我是这个项目的新手,所以如果您同意,我可以将整个代码发送给您,您可以检查问题所在。

以上是关于无法获得所需的掩码检测输出的主要内容,如果未能解决你的问题,请参考以下文章

UIView 反转掩码 MaskView

在 pytorch 中通过具有线性输出层的 RNN 发送的填充批次的掩码和计算损失

考虑到高性能,使用 sql 获得所需的输出?

我没有从代码中获得所需的输出,while 循环似乎有问题

在 Windows 批处理脚本的 for 循环中未通过“查找”命令获得所需的输出

为啥我无法使用 CAGradientLayer 的掩码