python中opencv库的使用之目标检测(二)

 1 #course15.py
 2 import numpy as np
 3 import cv2
 4
 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) in smile:
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) in faces:
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) in eyes:
32             cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
33
34             font = cv2.FONT_HERSHEY_SIMPLEX
35             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)

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

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

Haar分类器是利用图像中目标的类Haar特征来对目标进行检测的,而利用积分图的方法可以加快类Haar特征的值的求解过程。
一个最基本的类Haar特征就是一个最简陋的弱分类器,而弱分类器优化后称为优化后的弱分类器。
将多个优化后的弱分类器组合起来便形成了强分类器。
但是单个的强分类器应用在实际的检测中效果并不好,
于是又有人提出了将若干个强分类器层叠或者称之为级联在一起,
这样就得到了级联分类器。

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

时间: 2024-10-26 13:40:46

python中opencv库的使用之目标检测(二)的相关文章

Python中cv2库和matplotlib库色彩空间排布不一致

今天在python中读如图片时发现以下问题: 1.在from matplotlib import pyplot as plt之后,再import cv2 cv2.imshow()不能正常使用,还不知道是什么原因 目前我的解决办法是,使用cv2读入图像,然后调用plt.imshow()显示图像,不使用cv2.imshow()显示图像 2.OpenCV的cv2库中的色彩空间和matplotlib库中的色彩空间的排布方式是不一样的 cv2中的色彩排列是(b,g,r),而matplotlib库中的排列方

Python下opencv库的安装过程与一些问题汇总

本文主要内容是python下opencv库的安装过程,涉及我在安装时遇到的问题,并且,将从网上搜集并试用的一些解决方案进行了简单的汇总,记录下来. 由于记录的是我第一次安装opencv库的过程,所以内容涵盖可能不全面,如果有出错的地方请务必指正.下面进入主题. 关于python的下载安装不再赘述,python的版本号是我们在opencv库的安装过程中需要用到的,cmd运行python可以进行查看. 通常,我们使用pip命令来安装扩展库. 打开cmd运行 pip install opencv-py

python中第三方库redis.py简介

1.几种连接方式介绍 """ Redis简介: 这是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持 多种存储数据结构,使用也比较简单. python中提供连接redis的第三方库redis.py. 在这个库中有两个类Redis和StrictRedis来实现Redis的命令操作. Redis是StrictRedis的子类,主要功能是向后兼容旧版本库里的几个方法. 在这里使用官方推荐的StrictRedis. """ from re

Python中datetime库的用法

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 from datetime import datefrom datetime import datetimefrom datetime import timefrom d

一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码

计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不仅需要知道这是哪一类图像,而且要知道图像中所包含的内容有什么及其在图像中的位置,因此,其工业应用比较广泛.那么,今天将向读者介绍该领域中表现优异的一种算算法--"你只需要看一次"(you only look once,yolo),提出该算法的作者风趣幽默可爱,其个人主页及论文风格显示了其性

Python中的库使用之一 PIL

先上代码:本文主要工给自己参考,在需要的时候直接搜索查找就行了,不想看没有实际运行例子的文档,当参考完这部分还哦未能解决问题在参考PIL的相关文档! 1 Skip to content 2 This repository 3 Search 4 Pull requests 5 Issues 6 Gist 7 @mm1994uestc 8 Unwatch 1 9 Star 0 10 Fork 0 mm1994uestc/PythonImageProcessing 11 Code Issues 0 P

python中requests库使用方法详解

一.什么是Requests Requests 是?ython语?编写,基于urllib,采?Apache2 Licensed开源协议的 HTTP 库.它? urllib 更加?便,可以节约我们?量的?作,完全满?HTTP测试需求. ?句话--Python实现的简单易?的HTTP库 二.安装Requests库 进入命令行win+R执行 命令:pip install requests 项目导入:import requests 三.各种请求方式 直接上代码,不明白可以查看我的urllib的基本使用方法

python中pyquery库的css选择器实战解析

1.pyquery部分选择器解释 """pyquery的CSS选择器方法""" from pyquery import PyQuery html = """ <div id="container"> <table class="tablelist" cellpadding="0" cellspacing="0">

python中opencv的安装

1.得到opencv的安装包: 2.把安装包中的cv.py, cv2.pd放到一个文件夹中,并把这个文件夹放到D:\Anaconda2\Lib\site-packages中: 3.添加新的变量,变量名称为PYTHONPATH,值为D:\Anaconda2\Lib\site-packages\OpenCV. 原文地址:https://www.cnblogs.com/toudoubao/p/8259886.html