| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> OpenCV入门初探---拿走就能用的 人脸检测小项目 源码分析 -> 正文阅读 |
|
[人工智能]OpenCV入门初探---拿走就能用的 人脸检测小项目 源码分析 |
0x00思路概览该程序整体逻辑是,识别你的脸并保存count(计数器)张你的脸的图片,然后退出,或者在运行中按q。 其中有两层重要的循环 1.持续调用摄像头循环-----while true 2.处理识别函数识别出的每张脸的函数-----for xywh in face 0x01代码概览(分类器是啥?)-------F&A --2 0x02.相机逻辑分析启动调用
获取单个帧光启动没用,需要捕获每一帧图片,编程而言,能细化的东西一定会尽量细化,想事情往往不能想的太过简单
这个ret用来反馈异常,如果截取不到帧则退出 释放
0x03.识别逻辑分析转换获取单个帧后,opencv读取图片的颜色通道排列时BGR,因此需要转换。 (深度学习中为什么普遍使用BGR而不用RGB?)----F&A 1
frame是上文每一帧图片的载体 第二个参数是图片格式,更多参数如下 识别函数这里我们之前用gray接受了BGR格式的当前帧
参数1:image--待检测图片,一般为灰度图像加快检测速度; 参数2:objects--被检测物体的矩形框向量组; 参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%; 参数4:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。 如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框, 这种设定值一般用在用户自定义对检测结果的组合程序上; 参数5:flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为 CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域; 参数6、7:minSize和maxSize用来限制得到的目标区域的范围。 返回值具体函数细节暂时没看到,但根据下面的代码可以分析来,会返回每一张脸的矩形识别角坐标x,y(左下角)w,h即宽高,加上对应x,y就是右上角 框图反馈
rectangle用来绘制矩形框 通常用在图片的标记上 参数:1.被处理图片 2.3矩形左上右下角坐标 4.颜色 5.线型 此时,你可以在电脑屏幕面前获得实时反馈。 frame是当前帧 0x04.存储逻辑在整个程序开始前,我们需要给定一个路径作为参数,如果这个路径不是目录,我们就根据这个路径生成一个目录 给定参数是否为目录
图片“格式化”我们希望存储的照片格式一致 然后我们在这里要截取指定位置并缩放 文接3-识别函数,我们用gray存储了灰度图
参数1:图片[位置],参数2:缩放为多大 写入
根据迭代器count命名 存照片代码
F&A1.深度学习中为什么普遍使用BGR而不用RGB?“因为caffe,作为最早最流行的一批库的代表,用了opencv,而opencv默认通道是bgr的。这是opencv的入门大坑之一,bgr是个历史遗留问题,为了兼容早年的某些硬件。 其实你自己训练完全可以用rgb,新库也基本没了bgr还是rgb这个问题,就是切换下顺序。但如果你要用一些老的训练好的模型,就得兼容老模型的bgr。 2.分类器Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。 haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalface_alt.xml haarcascade_frontalface_alt_tree.xml haarcascade_frontalface_alt2.xml haarcascade_frontalface_default.xml haarcascade_fullbody.xml haarcascade_lefteye_2splits.xml haarcascade_lowerbody.xml haarcascade_mcs_eyepair_big.xml haarcascade_mcs_eyepair_small.xml haarcascade_mcs_leftear.xml haarcascade_mcs_lefteye.xml haarcascade_mcs_mouth.xml haarcascade_mcs_nose.xml haarcascade_mcs_rightear.xml haarcascade_mcs_righteye.xml haarcascade_mcs_upperbody.xml haarcascade_profileface.xml haarcascade_righteye_2splits.xml haarcascade_smile.xml haarcascade_upperbody.xml 这里我们用的是 haarcascade_frontalface_default.xml特征值文件 xml里面的数据都是深度学习训练好的数据,具体需要去看深度学习相关的内容 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:48:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |