Chapter 09:人脸识别与车牌检测
检测 09 人脸识别 Chapter 车牌
2023-09-14 09:12:45 时间
随着本专栏的学习,你可以快速的掌握如何使用Opencv,请注意更多的学习内容还请看官方文档,本专栏是为了给对于视觉方向比较感兴趣的新手所写,带领它们做好一个基础的框架,让他们快速学会如何通过这个框架调取函数做自己感兴趣的项目,同时我也正在更新我的Opencv项目实战专栏,你可以搭配着一起学习。
订阅此专栏, (2条消息) Opencv项目实战_夏天是冰红茶的博客-CSDN博客
人脸识别
我们先来看看它的效果:
成功检测到人脸,如果你看过我前面的项目,你会非常容易地将它修改成实时地检测人脸。这里我们用到了"haarcascade_frontalface_default.xml",这是一个入门的教程,暂时不用了解它是怎么来的,它就是一个默认的人脸检测器。
import cv2
faceCascade= cv2.CascadeClassifier("Resources/haarcascade_frontalface_default.xml")
#需将文件放在同一个文件夹里
img = cv2.imread('Resources/lena.png')
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(imgGray,1.1,4)
#比例因子1.1
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,125,255),2)
cv2.imshow("Result", img)
cv2.waitKey(0)
CascadeClassifier,是Opencv中做人脸检测的时候的一个级联分类器,detectMultiScale用来检测到的对象将作为列表返回个矩形,再简单画框就完成了。
车牌检测
import cv2
#############################################
frameWidth = 640
frameHeight = 480
nPlateCascade = cv2.CascadeClassifier("Resources/haarcascade_russian_plate_number.xml")
minArea = 200
color = (255,0,255)
###############################################
cap = cv2.VideoCapture(0)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10,150)
count = 0
while True:
success, img = cap.read()
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
numberPlates = nPlateCascade.detectMultiScale(imgGray, 1.1, 10)
for (x, y, w, h) in numberPlates:
area = w*h
if area >minArea:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 255), 2)
cv2.putText(img,"Number Plate",(x,y-5),
cv2.FONT_HERSHEY_COMPLEX_SMALL,1,color,2)
imgRoi = img[y:y+h,x:x+w]
cv2.imshow("ROI", imgRoi)
cv2.imshow("Result", img)
if cv2.waitKey(20) & 0xFF == ord('q'):
break
if cv2.waitKey(1) & 0xFF == ord('s'):
cv2.imwrite("Resources/Scanned/NoPlate_"+str(count)+".jpg",imgRoi)
cv2.rectangle(img,(0,200),(640,300),(0,255,0),cv2.FILLED)
cv2.putText(img,"Scan Saved",(150,265),cv2.FONT_HERSHEY_DUPLEX,
2,(0,0,255),2)
cv2.imshow("Result",img)
cv2.waitKey(500)
count += 1
车牌检测与上面的人脸识别相同。当然在后面添加了保存的功能。
本次的教程就到这里了,这个系列学完后,大家可以搭配我另外一个实战的专栏学习,遇到不会的可以去查找,在遇到问题时学会新的知识。
相关文章
- 基于matlab的Canny算法的边缘检测(附源代码)
- 【目标检测】小脚本:根据xml批量复制jpg图片
- CVPR2019 | 29篇目标检测相关论文汇总(含2D/3D/显著性目标检测等)
- AI车辆检测/人脸检测智能分析网关新增烟火检测识别与烟火告警
- 如何利用Python杀进程并保持驻留后台检测
- 旋转目标检测 | Oriented RepPoints,基于点集表示的旋转目标检测模型
- 14种异常检测方法汇总(附代码)!
- [Nature Communications | 论文简读] 使用弱监督深度学习进行准确的体细胞变异检测
- 【错误记录】Google Play 上架报错 ( 我们检测到您的应用程序包含未经认证的广告SDK或未经批准用于儿童导向服务的SDK )
- Python index()方法:检测字符串中是否包含某子串
- java 检测文本、文件编码详解编程语言
- PHP array_key_exists():检测键名是否位于数组中
- 检测Linux服务器端口开启状态(linux端口是否开启)
- 检查Redis服务开启与否(检测redis是否开启)
- 检验Redis服务状态看看它可不可靠(检测redis是否可用)
- 英国高校提出新型核磁共振检测,特制 VR 头盔带来沉浸式体验
- php循环检测目录是否存在并创建(循环创建目录)