在级联分类器上使用detectMultiScale时,带Python的OpenCV无法正确退出

2024-04-25 20:18:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试验OpenCV和面部识别。它一直没有任何问题,直到最近它停止退出我的脚本,我被迫关闭commandprompt。经过一些调试,我找到了这条线的罪魁祸首。如果我删除这一行,程序将正确退出,但我没有检测人脸的选项:(

faces = FACE_CLASSIFIER.detectMultiScale(gray, scaleFactor=SCALE_FACTOR, minNeighbors=MIN_NEIGHBORS)

我也在销毁windows命令之前和之后尝试过使用此代码,但没有效果

for i in range(1, 5):
    cv2.waitKey(1)

我在opencv文档中找到了这些信息

When the cascade is not needed anymore, release it using cvReleaseHaarClassifierCascade(&cascade).

https://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

我认为这可能是一个合适的解决方案,但我还没有找到一个方法,可以让我做到这一点

样本代码

我从命令行开始使用

python face.py

脸蛋

import cv2

FACE_CLASSIFIER = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
SCALE_FACTOR = 1.5
MIN_NEIGHBORS = 5

video_capture = cv2.VideoCapture(0)

while True:
    # Capture frame-by-frame
    ret, frame = video_capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # If this line is removed the program exits properly 
    faces = FACE_CLASSIFIER.detectMultiScale(gray, scaleFactor=SCALE_FACTOR, minNeighbors=MIN_NEIGHBORS)

    cv2.imshow('Video', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture.release()
cv2.destroyAllWindows()

系统信息

Microsoft Windows [Version 10.0.18363.836]

pip3 list
Package               Version
--------------------- --------
numpy                 1.18.5
opencv-contrib-python 3.4.9.33
pip                   20.1.1
setuptools            41.2.0

python --version
Python 3.7.7

Tags: videoneighborsmincv2frameopencvcascadecapture
1条回答
网友
1楼 · 发布于 2024-04-25 20:18:08

问题似乎与opencv contrib python包有关。我尝试了以下软件包,它们都很有效

pip3 install opencv-contrib-python==3.4.2.16
pip3 install opencv-contrib-python==3.4.2.17
pip3 install opencv-contrib-python==3.4.3.18

这些版本都引入了此警告,但仍然有效

[ WARN:1] terminating async callback

pip3 install opencv-contrib-python==3.4.4.19
pip3 install opencv-contrib-python==3.4.5.20
pip3 install opencv-contrib-python==3.4.6.27
pip3 install opencv-contrib-python==3.4.7.28
pip3 install opencv-contrib-python==3.4.8.29
pip3 install opencv-contrib-python==4.0.0.21
pip3 install opencv-contrib-python==4.0.1.23
pip3 install opencv-contrib-python==4.0.1.24
pip3 install opencv-contrib-python==4.1.0.25

这些版本都引入了此警告,但仍然有效

[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback

pip3 install opencv-contrib-python==4.1.1.26
pip3 install opencv-contrib-python==4.1.2.30

这些版本无法以干净的退出方式运行应用程序

pip3 install opencv-contrib-python==3.4.9.31
pip3 install opencv-contrib-python==3.4.9.33
pip3 install opencv-contrib-python==4.2.0.32

相关问题 更多 >