• 人脸检测和车牌识别

1. 人脸检测

首先我们要搞清楚人脸检测中的一些概念.

人脸检测: 在一张图像中判断是否存在人脸并找出人脸所在的位置

人脸识别: 在人脸检测的基础上收集人脸数据集合进行处理保存信息,将输入人脸与保存的信息进行比对校验,得到是否为其中某个人脸

特征值: 以某种特定规则对输入源进行处理得到具有唯一性质量化的值,在人脸识别中特征值的提取有 HOG-方向梯度直方图 , HAAR-like特征 , LBP-局部二进制模式 三种方法.

分类器: 根据特征值界定输入事物是否属于已知某种类别的过滤条件组合,未知类别的算聚类器,弱分类器:分类器的正确率高于随机分类(50%),强分类器:能满足预期分类并且正确率很高的分类器.

Adaboost: 迭代算法,同一个训练集合下训练多个弱分类器,把弱分类器迭代组合成一个强分类器.

级联分类器: 将多个同类型的分类器联合起来进行推算整合以得到符合目标的最终分类器的方法.

分类器生成及使用

一个高准确率的级联分类器的主要生成步骤如下: 1.大量样本集合,特征值的提取 2.通过adaboost 训练多个弱分类器并迭代为强分类器 3.多层级联强分类器,得到最终的级联分类器 这些训练流程完成之后结果以xml的方式保存起来,就是分类器文件,opencv中包含了以上的实现,并且已经存放了许多已经训练好的不同类型的不同特征值提取生成的的级联分类器 Opencv中可以直接加载这些分类器文件,并且给出了便捷的API

CascadeClassifier 参数1:image–待检测图片,一般为灰度图像加快检测速度; 参数2:objects–被检测物体的矩形框向量组; 参数3:scaleFactor–表示在前后两次相继的扫描中,图像被缩放的比例,1.1即每次缩放10% 用于检测 参数4:minNeighbors–表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 minneighbors - 1 都会被排除。 如果minneighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框, 这种设定值一般用在用户自定义对检测结果的组合程序上(使用默认值即可)

参数5:flags–要么使用默认值,要么使用CVHAARDOCANNYPRUNING,如果设置为 CVHAARDOCANNYPRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域, 因为这些区域通常不会是人脸所在区域; 参数6、7:minSize和maxSize用来限制得到的目标区域的范围。


#第一步,创建Haar级联器 facer = cv2.CascadeClassifier('./haarcascades/haarcascadefrontalfacedefault.xml') eye = cv2.CascadeClassifier('./haarcascades/haarcascadeeye.xml') mouth = cv2.CascadeClassifier('./haarcascades/haarcascademcsmouth.xml') nose = cv2.CascadeClassifier('./haarcascades/haarcascademcs_nose.xml')#第二步,导入人脸识别的图片并将其灰度化 img = cv2.imread('./p3.png')#第三步,进行人脸识别 #[[x,y,w,h]] gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#检测出的人脸上再检测眼睛 faces = facer.detectMultiScale(gray, 1.1, 3) i = 0 j = 0 for (x,y,w,h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2) roiimg = img[y:y+h, x:x+w] eyes = eye.detectMultiScale(roiimg, 1.1, 3) for (x,y,w,h) in eyes: cv2.rectangle(roiimg, (x, y), (x+w, y+h), (0, 255, 0), 2) roieye=roiimg[y:y+h, x:x+w] eyename = 'eye' + str(j) j = j+1 cv2.imshow(eyename, roieye)i = i+1winname = 'face' + str(i)cv2.imshow(winname, roi_img)
# mouths = mouth.detectMultiScale(gray, 1.1, 3) # for (x,y,w,h) in mouths: # cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)# noses = nose.detectMultiScale(gray, 1.1, 3) # for (x,y,w,h) in noses: # cv2.rectangle(img, (x, y), (x+w, y+h), (255, 255, 0), 2)cv2.imshow('img', img)cv2.waitKey() cv2.destroyAllWindows() ```### 2. 车牌识别我们可以利用opencv提供的车牌检测功能把车牌检测出来, 然后进行形态学处理消除一些噪声, 最后使用tesseract进行车牌识别.tesseract安装苹果: brew install tesseract tesseract-lang
ubantu: apt install tesseract tesseract-lang
windows: 网上下载tesseract安装包.
安装完成后需要设置环境变量.
在系统path路径中添加tesseract的路径.
添加名为TESSDATA_PREFIX的系统变量安装完tesseract之后, 需要在python环境安装pytesseract包.pip install pytesseract.pytesseract可以让大家在python环境中使用tesseract的功能.```python import pytesseractimg = cv2.imread('./chinacar.jpeg')# 变成黑白图片 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 创建haar级联器 car = cv2.CascadeClassifier('./haarcascaderussianplate_number.xml') cars = car.detectMultiScale(gray) for (x, y, w, h) in cars: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) roi = gray[y: y + h, x: x + w]# 进行形态学操作# 二值化ret, roi_bin = cv2.threshold(roi, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)cv2.imshow('roi', roi_bin)# 开操作'
# kernel = cv2.getStructuringElement(cv2.MORPHRECT, (3, 3)) kernel = np.ones(shape=(3, 3), dtype=np.uint8) roi = cv2.morphologyEx(roibin, cv2.MORPHOPEN, kernel, iterations=1) cv2.imshow('roi2', roi) print(pytesseract.imagetostring(roi, lang='chisim+eng', config='--psm 8 --oem 3'))cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWind

十三.人脸检测和车牌识别相关推荐

  1. 高帧率扑克牌识别技术详解一(可用于车牌识别,字符识别,人脸检测,验证码识别等等成熟领域)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 高帧率扑 ...

  2. python+opencv+dlib实现人脸检测与表情识别

    python+opencv+dlib实现人脸检测与表情识别 一,dlib简单介绍:Dlib包含广泛的机器学习算法.所有的设计都是高度模块化的,快速执行,并且通过一个干净而现代的C ++ API,使用起 ...

  3. Opencv中的深度学习(人脸检测、车牌检测、DNN)

    首先,无论是做检测还是DNN图像分类,所有的模型或配置文件都需要从以下三个网站中下载IT大牛们帮我们创建的各种分类器: # 人脸检测 ''' https://github.com/opencv/ope ...

  4. 100万+奖金池!目标检测、车牌识别、人体分割等赛事全面启动! ECV-2021 来了...

    ECV-2021极市计算机视觉开发者榜单大赛(以下简称ECV-2021)已于2021年7月6日正式开赛! ECV-2021由青岛市人民政府指导,极视角科技有限公司. 青岛市委台港澳办.青岛市工业和信息 ...

  5. 100万+奖金池!目标检测、车牌识别、人体分割等赛事全面启动! ECV-2021 来了

    ECV-2021极市计算机视觉开发者榜单大赛(以下简称ECV-2021)已于2021年7月6日正式开赛! ECV-2021由青岛市人民政府指导,极视角科技有限公司. 青岛市委台港澳办.青岛市工业和信息 ...

  6. 人脸检测,关键点识别,人脸对齐

    import cv2 import dlib import numpy as np import math PREDICTOR_PATH = "E:/Testcomptition/shape ...

  7. 人脸检测+CNN面部表情识别

    利用CNN进行面部表情识别 https://blog.csdn.net/HsingYang/article/details/122247295 人脸检测进阶:使用 dlib.OpenCV 和 Pyth ...

  8. 车牌识别技术详解一(可用于车牌识别,字符识别,人脸检测,验证码识别等等成熟领域)

    本文主要介绍目前主流的adaboost目标检测算法,和CNN卷积神经网络字符识别算法.以扑克牌识别技术为题介绍相关的开发流程和经验. 整个系统包括, 1.摄像头采集,这里以USB摄像头通过direct ...

  9. 家庭服务机器人的人脸检测、跟踪与识别研究

    摘要:本文介绍了一个用于家庭服务机器人完成人脸检测.跟踪.识别的双目视觉系统.该系统首先采用人脸肤色模型结合相似度来检测人脸:然后通过基于颜色信息的CAMSHIFT算法跟踪运动的人脸:最后利用嵌入式隐 ...

最新文章

  1. angular.isUndefined()
  2. C# 工厂模式 简单入门
  3. treegrid,可以展开的jqgrid树
  4. 微软发布Visual Studio 2012 示例代码浏览器
  5. mac 下载的破解软件显示 文件已损坏
  6. [WARNING] The POM for XXX-system:jar:1.9.0-SNAPSHOT is missing, no dependency information available
  7. 设计模式--责任链模式--Java实现
  8. 【guava】guava 11.0.2 版本 key 肯能丢数据的bug
  9. Delphi Access Violation错误的分析
  10. 随机取出若干条记录的SQL语句
  11. 《c语言程序设计》-谭浩强
  12. java dem数据格式解析_【转载】DEM数据的介绍,获取,处理
  13. DevCon 5 2019 活动照片
  14. 四、FFI和第三方模块
  15. 全志A10/RK2918等七款平板芯片横向PK
  16. 目前中国计算机水平如何,中国现在计算机水平现状是怎样的
  17. GGGGGGithub
  18. gstreamer简介
  19. [Pytorch框架] 5.1 kaggle介绍
  20. oracle写excel文件,ORACLE-将oracle数据库中数据写入excel文件

热门文章

  1. autojs 手游 脚本UI demo【仅供学习交流】
  2. Linux 查看ip没有ens33解决方法
  3. 【STM32F429的DSP教程】第2章 Matlab R2018a的安装
  4. Transformer Tracking
  5. error ‘onMounted‘ is not defined no-undef,已解决,已更正了
  6. 【关于ChatGPT的30个问题】1、ChatGPT是什么?/ By 禅与计算机程序设计艺术
  7. [mysql]my.cnf在哪里
  8. iphone两个备份合并_看完这篇干货,再备份iPhone数据
  9. [SSIS] 之十: SSIS百度详解
  10. 机房服务器安装操作系统