级联分类器训练(traincascade)之后检测(cv2.CascadeClassifier)

训练

级联分类器训练用户指南:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/user_guide/ug_traincascade.html

训练过程:https://blog.csdn.net/qq_32502511/article/details/79010509

训练结果:

N是训练层级,HR(hit rate) 是正样本输入后输出结果正确率;FA(fault alarm)是负样本输入后输出结果错误率。

理想是希望HR接近1,FA接近0。训练过程是层级递进,直到达到设置要求。

训练很慢,根据样本数量不同,可能会几天。舌头位置识别,这个例子效果就不是很好,不过训练过程可以借鉴。

其实这种方式已经不太常用,因为即使训练出来准确率也不是很高,更何况训练过程很慢。

当然也有些训练的效果不错,这也说明图像识别不一定非要用deep learning,只不过用神经网络更好效果更好

opencv官网提供了一些已经训练好的分类器,可以直接使用:

https://download.csdn.net/download/lusics/11003803

 

检测

 

以人脸识别为例,采用摄像头收集到的图像。

 

代码中,根据实际分类器.xml位置更改load路径即可。


import cv2
 
# 加载opencv自带的人脸分类器
faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
faceCascade.load(r'C:\workspace\python\opencvTongueDetect\haarcascades\haarcascade_frontalface_alt2.xml')

cap = cv2.VideoCapture(0)
flag = 0
timeF = 10
while True:
    flag+=1
    ret, frame = cap.read()
    img = frame.copy()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    rect = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.15,
        minNeighbors=3,
        minSize=(3,3),
        flags = cv2.IMREAD_GRAYSCALE
    )
    #cv2.rectangle(frame, (20, 40), (30, 50), (0, 255, 0), 2)
    for (x, y, w, h) in rect:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
        #识别到物体后进行裁剪保存
        #jiequ = img[x:(x+w), y:(y+h)]
        #cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',jiequ) #save as jpg
 
    #读取到保存图片
#     if(flag%timeF==0):
#         cv2.imwrite('E://tools//python//eclipse//work//pythonTest//demo//0202//img//save//'+str(flag) + '.jpg',frame) #save as jpg
 
 
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值