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.JdbcOdbc...