当前位置: 首页 > news >正文

网站建设暨检务公开自查报告做网站网站需要

网站建设暨检务公开自查报告,做网站网站需要,wordpress如何做到手机端,公司注册网上核名通不过Haar级联分类器 在OpenCV中主要使用了两种特征#xff08;即两种方法#xff09;进行人脸检测#xff0c;Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法#xff0c;它是一种基于机器学习的特征选择方法#xff0c;…Haar级联分类器 在OpenCV中主要使用了两种特征即两种方法进行人脸检测Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法它是一种基于机器学习的特征选择方法能够快速而有效地检测出图像中的对象或特定的模式例如人脸。 Haar级联分类器工作的基本原理是使用弱分类器通常是基于决策树的弱分类器级联成一个强大的分类器。在训练过程中它通过提取训练样本中的特征并根据这些特征进行分类来逐步学习目标对象例如人脸的特征模式。级联的概念允许快速筛选出负样本减少计算量从而提高了检测速度。下图展示了级联的过程 我们需要考虑如何在层次结构中组合多个Haar级联分类器以便用一个分类器识别父区域就目标而言是一张人脸用其他分类器识别子区域比如眼睛。 opencv提供了多种训练好的级联分类器模型文件这些文件通常是XML格式存放在opencv安装目录下源码文件夹中sources\data\haarcascades haarcascade_eye.xml, 眼睛 haarcascade_eye_tree_eyeglasses.xml, 戴眼镜的眼睛 haarcascade_frontalcatface.xml, 正面猫脸 haarcascade_frontalcatface_extended.xml, 正面猫脸 haarcascade_frontalface_alt.xml, 正面人脸 haarcascade_frontalface_alt2.xml, 正面人脸 haarcascade_frontalface_alt_tree.xml, 正面人脸 haarcascade_frontalface_default.xml, 正面人脸 haarcascade_fullbody.xml, 人体 haarcascade_lefteye_2splits.xml, 左眼 haarcascade_license_plate_rus_16stages.xml, haarcascade_lowerbody.xml, haarcascade_profileface.xml, haarcascade_righteye_2splits.xml, 右眼 haarcascade_russian_plate_number.xml, haarcascade_smile.xml, 笑脸 haarcascade_upperbody.xml, 上身从文件名可知这些级联是用于人脸、眼睛、鼻子和嘴的跟踪。这些文件需要正面、直立的人脸图像。创建人脸检测器时会使用这些文件创建自己的级联并训练这些级联来检测各种对象。 Haar级联分类器执行流程 1. 数据准备 正样本收集 收集包含需要检测对象的图像并对图像进行标注标注出感兴趣对象的位置。 负样本收集 收集不包含感兴趣对象的图像或者与感兴趣对象不相关的图像样本。 创建样本信息文件 创建包含正样本和负样本信息的数据文件描述图像路径、对象位置和标签等信息。 2. 特征提取 Haar 特征选择 对于每个样本图像从图像中提取 Haar 特征。Haar 特征是一种矩形区域的强度差异计算用于表示图像的局部特征。 特征值计算 计算每个样本图像的 Haar 特征值。Haar 特征是根据矩形区域的像素和计算的。这些特征值将用于训练分类器。 3. 训练分类器 级联分类器训练 使用提取的特征值对分类器进行训练。初始阶段级联分类器包含多个弱分类器例如决策树、Adaboost 等。 特征选择和增强 训练过程中级联分类器将对特征进行选择和增强以提高对感兴趣对象和背景的区分能力。 级联结构构建 根据训练数据和特征值构建多个级联阶段每个阶段都包含多个弱分类器。 4. 级联分类器应用 对象检测 将训练好的级联分类器应用于新的图像中进行对象检测。级联分类器采用级联结构逐渐缩小搜索区域使用不同阶段的弱分类器进行对象检测。 非极大值抑制 对检测到的对象进行非极大值抑制Non-Maximum Suppression以消除重叠区域或多次检测到同一对象的情况。 使用 Haar 级联检测器检测图片中的人脸的步骤 1创建一个 CascadeClassifier 级联分类器对象从 .xml 文件加载级联分类器模型。 2读取待检测的图片。 3使用 detectMultiScale() 方法检测图片返回检测到的面部或眼睛的边界矩形。 4将检测到的边界矩形绘制到检测图片上。 OpenCV 中定义了级联分类器类 cv::CascadeClassifier。在 Python 语言中使用接口函数 cv2.CascadeClassifier() 从文件创建分类器。成员函数 cv.CascadeClassifier.detectMultiScale() 用于执行对图像进行目标检测。 代码示例 #include opencv2/objdetect/objdetect.hpp #include opencv2/highgui/highgui.hpp #include opencv2/imgproc/imgproc.hpp#include iostream #include stdio.husing namespace std; using namespace cv;void detectAndDisplay(Mat frame);//注意需要把haarcascade_frontalface_alt.xml和haarcascade_eye_tree_eyeglasses.xml这两个文件复制到工程路径下 string face_cascade_name haarcascade_frontalface_alt.xml; string eyes_cascade_name haarcascade_eye_tree_eyeglasses.xml; CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; string window_name Capture - Face detection; RNG rng(12345);//-----------------------------------【main( )函数】-------------------------------------------- // 描述控制台应用程序的入口函数我们的程序从这里开始 //------------------------------------------------------------------------------------------------- int main(void) {VideoCapture capture;Mat frame;//-- 1. 加载级联cascadesif (!face_cascade.load(face_cascade_name)) { printf(--(!)Error loading\n); return -1; };if (!eyes_cascade.load(eyes_cascade_name)) { printf(--(!)Error loading\n); return -1; };//-- 2. 读取视频capture.open(0);if (capture.isOpened()){for (;;){capture frame;//-- 3. 对当前帧使用分类器Apply the classifier to the frameif (!frame.empty()){detectAndDisplay(frame);}else{printf( --(!) No captured frame -- Break!); break;}int c waitKey(10);if ((char)c c) { break; }}}return 0; }void detectAndDisplay(Mat frame) {std::vectorRect faces;Mat frame_gray;cvtColor(frame, frame_gray, COLOR_BGR2GRAY);equalizeHist(frame_gray, frame_gray);//-- 人脸检测face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(30, 30), Size(200, 200));for (size_t i 0; i faces.size(); i){Point center(faces[i].x faces[i].width / 2, faces[i].y faces[i].height / 2);ellipse(frame, center, Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, Scalar(255, 0, 255), 2, 8, 0);Mat faceROI frame_gray(faces[i]);std::vectorRect eyes;//-- 在脸中检测眼睛eyes_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));for (size_t j 0; j eyes.size(); j){Point eye_center(faces[i].x eyes[j].x eyes[j].width / 2, faces[i].y eyes[j].y eyes[j].height / 2);int radius cvRound((eyes[j].width eyes[j].height) * 0.25);circle(frame, eye_center, radius, Scalar(255, 0, 0), 3, 8, 0);}}//-- 显示最终效果图imshow(window_name, frame); }代码分析 1加载级联分类器 通过 CascadeClassifier 类加载人脸和眼睛的级联分类器XML 文件即 haarcascade_frontalface_alt.xml 和 haarcascade_eye_tree_eyeglasses.xml。 2读取视频流 使用 VideoCapture 对象打开摄像头设备ID为0读取视频帧数据。 3循环处理每一帧 在循环中不断从摄像头捕获帧数据 capture frame。 对于每一帧先进行空帧检测如果帧不为空则调用 detectAndDisplay() 函数进行人脸和眼睛检测。 4人脸检测 detectAndDisplay() 函数将传入的帧 frame 转换为灰度图像 frame_gray并进行直方图均衡化。 调用 face_cascade.detectMultiScale() 在灰度图像中检测人脸区域并将检测到的人脸区域存储在 faces 向量中。 什么叫直方图均衡化 首先直方图是图像中像素强度分布的图形表达方式它统计了每一个强度值所具有的像素个数。如下图所示横坐标代表图像的灰度变化0-255纵坐标代码每个灰度对应的像素个数。 那么直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。特别是在一些局部对比度较低的图像中可以帮助提高图像的质量。 说得更清楚一些, 以下面的直方图为例, 你可以看到左边直方图像素主要集中在中间的一些强度值上. 直方图均衡化要做的就是 拉伸 这个范围.。对其应用均衡化后, 得到了右图所示的直方图. 均衡化的图像见下面右图。可以很明显的看到图像对比度得到了增强。 图像均衡化函数 void equalizeHist(InputArray src, OutputArray dst);detectMultiScale函数解析该函数主要用于级联分类器如 Haar 级联分类器或者基于 HOG 特征的 SVM 分类器进行对象检测。 void CascadeClassifier::detectMultiScale(InputArray image, // 输入图像std::vectorRect objects, // 检测到的对象位置矩形double scaleFactor 1.1, // 每次图像缩小的比例int minNeighbors 3, // 最小邻近数用于合并矩形int flags 0, // 未使用的参数默认为0Size minSize Size(), // 对象最小尺寸Size maxSize Size() // 对象最大尺寸 );image输入图像灰度图像或彩色图像。 objects检测到的对象位置矩形集合返回给调用者。 scaleFactor表示在前后两次相继的扫描中搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%。建议范围通常在 1.01 到 1.5 之间较小的值会增加检测时间但也会增加准确性。较大的值会减少检测时间但可能会降低准确性。 minNeighbors匹配成功所需要的周围矩形框的数目每一个特征匹配到的区域都是一个矩形框只有多个矩形框同时存在的时候才认为是匹配成功比如人脸这个默认值是3较大的值可以提高对象检测的准确性但也会增加漏检率。通常建议设置在3到6之间。 flags未使用的参数通常为0。 可以取如下这些值 CASCADE_DO_CANNY_PRUNING1, 利用canny边缘检测来排除一些边缘很少或者很多的图像区域 CASCADE_SCALE_IMAGE2, 正常比例检测 CASCADE_FIND_BIGGEST_OBJECT4, 只检测最大的物体 CASCADE_DO_ROUGH_SEARCH8 初略的检测 minSize 和 maxSize指定对象的最小和最大尺寸。在实际应用中可以根据目标对象的大小设置这两个参数以过滤掉尺寸不在指定范围内的检测结果。minSize对于人脸检测通常设置在 20x20 到 30x30 的范围内。maxSize对于人脸检测可以设置在 200x200 到 300x300 之间。 5眼睛检测 遍历每个检测到的人脸区域在每个人脸区域中调用 eyes_cascade.detectMultiScale() 进行眼睛检测并将检测到的眼睛区域存储在 eyes 向量中。 在检测到的每个眼睛区域周围画一个圆圈。 6显示结果 最后通过 imshow() 在窗口中显示带有人脸和眼睛检测框的帧图像。 效果显示
http://www.w-s-a.com/news/767984/

相关文章:

  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3
  • 凡科做的微网站怎样连接公众号seo李守洪排名大师
  • 温州网站开发网站的制作东莞寮步伟易达电子厂
  • 北京网站设计制作关键词优化微信小程序开发推广网站建设优化规划书
  • 杭州临平网站建设开发公司将购房款划给总公司的法律责任
  • 广东外贸网站推广分类wordpress
  • 聚美优品网站建设方案商城和营销型网站建设
  • 比较著名的seo网站如何建设网站?
  • 如何做商业网站最火wordpress主题
  • 建设网站需要哪些软硬件条件wordpress文章页标题优化
  • 网站建设功能需求文档wordpress 1g1核1m
  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些
  • delphi做网站阿里巴巴官网首页登录入口
  • 游戏网站怎么建设新建wordpress模板
  • 网络服务器是指兰州网站seo诊断