python怎样调用opencv库_python中opencv库的使用之目标检测(二)

1 #course15.py

2 importnumpy as np3 importcv24

5 #multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades

6

7 #https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

8 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')9 #https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml

10 eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')11

12 eyeglasses_cascade = cv2.CascadeClassifier('haarcascade_eye_tree_eyeglasses.xml')13

14 smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')15

16 cap =cv2.VideoCapture(0)17

18 while(cap.isOpened()):19 ret, img =cap.read()20 gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)21 faces = face_cascade.detectMultiScale(gray, 1.3, 5)22 smile =smile_cascade.detectMultiScale(gray)23 for (sm_x,sm_y,sm_w,sm_h) insmile:24 cv2.rectangle(gray,(sm_x,sm_y),(sm_x+sm_w,sm_y+sm_h),(0,0,255),2)25

26 for (x,y,w,h) infaces:27 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)28 roi_gray = gray[y:y+h, x:x+w]29 roi_color = img[y:y+h, x:x+w]30 eyes =eye_cascade.detectMultiScale(roi_gray)31 for (ex,ey,ew,eh) ineyes:32 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)33

34 font =cv2.FONT_HERSHEY_SIMPLEX35 cv2.putText(img,'Eye',(ex+x,ey+y), font, 0.5, (11,255,255), 1, cv2.LINE_AA)36 #eyeglasses = eyeglasses_cascade.detectMultiScale(roi_gray)

37 #for (e_gx,e_gy,e_gw,e_gh) in eyeglasses:

38 #cv2.rectangle(roi_color,(e_gx,e_gy),(e_gx+e_gw,e_gy+e_gh),(0,0,255),2)

39 #roi_gray = gray[ey:ey+eh, ex:ex+ew]#

40 #roi_color = img[ey:ey+eh, ex:ex+ew]#

41

42 cv2.imshow('img',img)43 k = cv2.waitKey(30) & 0xff

44 #print(k)

45 if k == 27:46 break

47

48 cap.release()49 cv2.destroyAllWindows()50 print(smile)

搭建的运行平台见本系列的(一),

698684-20170608211512168-1508924713.png

以上代码运用的是Haar级联分类器的原理,下面是Haar级联分类器原理的简单介绍:

Haar分类器是利用图像中目标的类Haar特征来对目标进行检测的,而利用积分图的方法可以加快类Haar特征的值的求解过程。

一个最基本的类Haar特征就是一个最简陋的弱分类器,而弱分类器优化后称为优化后的弱分类器。

将多个优化后的弱分类器组合起来便形成了强分类器。(至于如何将若干个优化后的弱分类器组合起来称为强分类器,用的是Adaboost算法,数学原理看了之后不是很懂,作为一个数学系的学生很惭愧。)

但是单个的强分类器应用在实际的检测中效果并不好,

于是又有人提出了将若干个强分类器层叠或者称之为级联在一起,

这样就得到了级联分类器。

检测效果:(能够利用摄像头捕捉形成视频,对视频中动态的对人脸、人眼进行检测,以下是视频截图)

698684-20170608212046465-1161788305.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值