一招解决报错error: OpenCV(4.2.0) C:projectsopencv-pythonopencvmodulesobjdetectsrccascadedetect.cpp

2022-06-14 09:22:45 浏览数 (1)

下面这个代码是借鉴别人调用摄像头进行人脸检测的 然而竟然报错 cv2.error: OpenCV(4.2.0) C:projectsopencv-pythonopencvmodulesobjdetectsrccascadedetect.cpp 查阅资料 发现是分类器路径问题 如果用在python中有转义作用 可以在前面加入r 取消转义 或者把改成/ 完美解决

代码语言:javascript复制
import cv2


def CatchVideo(window_name, camera_idx):
    cv2.namedWindow(window_name)

    #视频来源,可以选择摄像头或者视频
    cap = cv2.VideoCapture(0)

    #使用人脸识别分类器(这里填你自己的OpenCV级联分类器地址)
    classfier = cv2.CascadeClassifier(r"D:AnaconenvstensorflowLibsite-packagescv2datahaarcascade_frontalface_alt2.xml")

    #识别出人脸后要画的边框的颜色,RGB格式
    color = (0, 255, 0)

    while cap.isOpened():
        ok, frame = cap.read() #读取一帧数据
        if not ok:
            break

        #将当前帧转换成灰度图像
        grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        #人脸检测,1.2和3分别为图片缩放比例和需要检测的有效点数,32*32为最小检测的图像像素
        faceRects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))
        if len(faceRects) > 0:            #大于0则检测到人脸
            for faceRect in faceRects:  #框出每一张人脸
                x, y, w, h = faceRect
                cv2.rectangle(frame, (x - 10, y - 10), (x   w   10, y   h   10), color, 2)

        #显示图像
        cv2.imshow(window_name, frame)
        c = cv2.waitKey(10)
        if c & 0xFF == ord('q'):  #按q退出
            break

    #释放摄像头并销毁所有窗口
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    CatchVideo("Camera", 0)

0 人点赞