首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一招解决报错error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp

一招解决报错error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp

作者头像
zstar
发布2022-06-14 09:22:45
发布2022-06-14 09:22:45
4.1K0
举报
文章被收录于专栏:往期博文往期博文

下面这个代码是借鉴别人调用摄像头进行人脸检测的 然而竟然报错 cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.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:\Anacon\envs\tensorflow\Lib\site-packages\cv2\data\haarcascade_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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档