如何解决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 举报,一经查实,本站将立刻删除。