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

MATLAB+opencv人脸疲劳检测

我们可以通过多种方式从现实世界中获取数字图像,比如:数码相机、扫描仪、计算机扫描和磁共振成像等等。在这些情况中,虽然我们肉眼看到的是图像,但是当需要将图像在数字设备中变换传输时,图像的每个像素则对应一个数值。

例如,上述图像你可以看到一个汽车的后视镜,它可以用包含像素点强度值的矩阵来表示。虽然获取并存储像素点强度值的方法各不相同,但是图像在计算机中最终是以数值矩阵的形式来存储和处理的。OpenCV是一个计算机视觉库,主要用于处理和操作图像像素矩阵信息。因此,你首先需要熟悉OpenCV是如何存储和处理图像的。

Mat

OpenCV诞生于2001年。当时的库均是C语言接口创建,图像以C 语言的数据结构IplImage形式存储。在以往的教程和培训材料中均可以看到这一点,而这同时也反映出了C语言的优缺点。最大的挑战来自于手动的内存管理,它假设由用户来负责内存的分配和释放。对于代码量比较小的程序,手动分配内存没有问题。但是当代码量剧增时,处理起来的难度会急速增大。

幸运的是,C ++引入了类的概念,使得用户更容易实现自动内存管理。同时,C ++与C完全兼容,所以不存在兼容性问题,这也使代码迁移更加容易。OpenCV 2.0引入了一种新的C++接口,无需考虑内存管理问题,使得代码更加简洁,即利用更少的代码量,能够实现更多的功能。C ++接口的主要缺点是:目前许多嵌入式开发系统只支持C。因此,除非是针对嵌入式平台,否则没有必要使用的以往的老方法(除非你是受虐狂程序员,在自找麻烦)。

在使用Mat 时,需要知道的第一件事情是:无需手动分配内存。对于不再使用的内存,无需进行释放。大多数OpenCV函数会自动分配其输出数据。更为便捷的是,如果需要传递Mat 对象,则已经给它分配好了内存空间,可以被重用。换句话说,在任何时候都只用到执行任务所需要的内存,而无需进行额外的操作。

Mat基础类包含两部分数据:矩阵头(包括矩阵大小,存储方法,矩阵存储地址等信息)和包含像素矩阵值的指针(根据所选定的不同存储方法而有不同的维度)。矩阵头大小是一个常量,不同大小的图像的矩阵大小各不相同,通常矩阵大小要比图像大小大几个数量级。

OpenCV是一个图像处理库,其中包含大量图像处理函数。为了解决计算难题,多数情况下选用库中的多个函数来实现计算功能,常见的做法是将图像传递给函数。而图像处理算法的计算量往往非常大,所以要通过避免不必要的图像复制来进一步提升程序的运行速度。

为了解决上述问题, OpenCV采用了一种引用计数系统。具体做法是,每个Mat 对象有其各自的头,两个Mat 对象可以通过将矩阵指针指向同一地址来共享一个矩阵,复制操作只复制Mat 头和指向矩阵的指针,而不是复制数据本身。

上述所有的对象均指向同一个数据矩阵,对矩阵的任何变动均会影响所有的对象。在实际示例中,不同的对象只是对同一数据的不同的访问方式,尽管如此,不同MAT 对象的头各不相同。真正有趣的是,可以创建仅指向部分数据分段的MAT 对象头。例如,为了创建一个图像的感兴趣区域(ROI),你只需要创建一个具有行列边界的新MAT 对象头:


http://www.mrgr.cn/news/60180.html

相关文章:

  • CAS中的ABA问题
  • 【论文阅读】PGAN
  • 深入理解JAVA虚拟机(一)
  • 【SpringCloud】 K8s的滚动更新中明明已经下掉旧Pod,还是会把流量分到了不存活的节点
  • 再传上市消息,奇瑞汽车追赶智能电动的“风”
  • 01-二自由度机械臂—位置分析
  • 大厂面经:京东嵌入式面试题及参考答案
  • Redis-06 Redis高可用集群架构原理与搭建
  • 【MATLAB源码-第194期】基于matlab的MB-OFDM仿真,超宽带(UWB)无线传输。对比LS/DFT及其改进算法。
  • 【GESP】C++一级练习BCQM3085,最大的数
  • ChatSearch:一个基于多轮多模态对话上下文的图像检索数据集,它要求检索系统能够在对话中准确找到目标图像。
  • 字符(串)输入输出函数
  • 大数据都有哪些技术?
  • 火语言RPA流程组件介绍--网络监听数据清空
  • 【C++】类和对象(一):初步认识
  • 集合论(ZFC)之实数集(Reals)的构建(Construction)
  • Leetcode 3336. Find the Number of Subsequences With Equal GCD
  • Leetcode 3337. Total Characters in String After Transformations II
  • Leetcode 3332. Maximum Points Tourist Can Earn
  • Google DeepMind的研究人员提出了Talker-Reasoner框架
  • 【SpringMVC】web服务器,访问失败的问题,SpringMVC,建立连接,请求
  • 【ChatGP】让ChatGPT解释和简化复杂的技术概念
  • 108.SAP MII功能详解(20)Workbench-DisplayTemplate(i5Grid)
  • 开源视频生成 Pyramid Flow 本地部署实测
  • 前端css-媒体查询@media以及常见使用例子
  • 探索基础设施即代码(IaC):Terraform 与 CloudFormation 的应用