微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cv2.CascadeClassifier.detectMultiScale 错误

如何解决cv2.CascadeClassifier.detectMultiScale 错误

我正在编写一个使用 tkinter 和 pyautogui 截取屏幕截图并在屏幕上绘图的程序。

我正在使用 cv2.CascadeClassifier 来查找图像中的人脸。 该图像是程序在每个循环中执行的屏幕截图中的矩形切片(所有这些代码每 100 毫秒在 tkinter 的“after”函数中运行)。

这是我初始化 CascadeClassifier 的方式:

        cascPath = "haarcascade_frontalface_default.xml"
        casc_dir = cv2.data.haarcascades
        self.face_cascade = cv2.CascadeClassifier(casc_dir + "/" + cascPath)

然后像这样使用它:

def detect_faces(self,img):
        if len(img) == 0 or len(img[0]) == 0:
            return []

        img = cv2.cvtColor(img,cv2.CV_8U)
        faces = self.face_cascade.detectMultiScale(img,scaleFactor=1.1,minNeighbors=5,minSize=(96,96))
        return faces

img 是我切成矩形的屏幕截图时:

def capture_screen():
    img = pyautogui.screenshot()
    img = np.array(img)  # convert these pixels to a proper numpy array to work with OpenCV
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    return gray

img = capture_screen()
.
.
<some code to obtain x,y,h,w>
.
.
frame = img[y:y + h,x:x + w]
faces = self.detect_faces(frame)

然后对于这一行:

faces = self.face_cascade.detectMultiScale(img,96))

我收到错误

cv2.error: OpenCV(4.4.0) c:\users\appveyor\appdata\local\temp\1\pip-req-build-71670poj\opencv\modules\objdetect\src\cascadedetect.hpp:46: error: (-215:Assertion Failed) 0 <= scaleIdx && scaleIdx < (int)scaleData->size() in function 'cv::FeatureEvaluator::getScaleData'

烦人的部分是这个错误并不总是被提出,而且很难调试。

有什么帮助吗??

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?