基于opencv实现简单人脸检测
2024-09-08 13:12:44
作用:在视频中自动检测出人脸
使用内容:灰度转换,分类器,矩形框选,圆形框选,摄像头读取及释放
代码逻辑:
- 先读取摄像头后,
- 对摄像头拍摄到的图片进行逐帧分析,
- 并对图像进行灰度转换后使用类选择器识别,
- 最后将识别出来的部分用矩形框和圆形框框选,
- 在把图片返回,
- 然后打印图片帧的坐标,
- 如果检测键盘摁下q那么解释结束循环
- 释放内存和摄像头。
import cv2 as cv
def face_detect_demo(img):
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
face_detect = cv.CascadeClassifier('E:/opencv/opencv-4.6.0/data/haarcascades/haarcascade_frontalface_alt2.xml')
face = face_detect.detectMultiScale(gray)
for x, y, w, h in face:
cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
cv.circle(img, center=(x + w // 2, y + h // 2), radius=(w // 2), color=(255, 0, 0), thickness=2)
cv.imshow('result', img)
# 读取摄像头
cap = cv.VideoCapture(0, cv.CAP_DSHOW)
# cap = cv.VideoCapture('picture/arti.mp4')
# 循环
while True:
flag, frame = cap.read()
if not flag:
break
face_detect_demo(frame)
print(frame, frame.shape)
if ord('q') == cv.waitKey(1):
break
# 释放内存
cv.destroyAllWindows()
# 释放摄像头
cap.release()
总结:
主要是调用了opencv里面的分类器的库,需要注意的是圆形框选对象时计算好框选的位置范围。
最新文章
- Android自定义控件----RadioGroup实现APP首页底部Tab的切换
- PHP include 和 require 语句
- 安装pods 遇到的坑
- Oracle 直方图实例测试
- 关于QStringRef
- Thread学习
- css中的边框样式
- shell中的for、while、until
- Win32环境下的程序崩溃异常定位
- mysql分享记录
- 如何通过subId来获取phoneId?
- chapter8_3 c代码和错误
- git 以及 github 使用系列
- 手机cpu结构,arm
- Django(一)入门基础——hello world
- CodeForces 91B Queue
- 导出Excel实现 (ASP.NET C# 代码部分)
- Android 使用ColorMatrix改变图片颜色
- S老师 Shader 学习
- divide_3
热门文章
- 使用ingress-nginx
- mvn clean package 、mvn clean install、mvn clean deploy的区别与联系
- 用VS Code搞Qt 6:Gui基础类型——QGuiApplication和QWindow
- 如何理解「数字化是 IT 公司在给传统企业贩卖焦虑」?
- [题解] Codeforces Global Round 22 1738 A B C D E F 题解
- img通过修改css等比例缩小图片
- C++和Java多维数组声明和初始化时的区别与常见问题
- Pep9课下作业
- Vue中引入echarts。
- 不妨试试更快更小更灵活Java开发框架Solon