人脸识别 tracking.js学习

时间:2024-03-25 18:15:54

目录

一.定义

1.先定义window的属性,要用的全局对象

2.继承属性

2.初始化用户媒体

3.测试对象是否为DOM节点

4.测试对象是否为“window”对象

5.使用'document.queryselector'从css3选择器中选择一个dom节点

6.追踪器

7.追踪画布

8.追踪画布内部

9.追踪图像

10.追踪视频

二.各自方法

14.对象跟踪器实用程序


一.定义

1.先定义window的属性,要用的全局对象

人脸识别 tracking.js学习

2.继承属性

人脸识别 tracking.js学习

参数是子项、父项

定义过渡函数TempCtor()

TempCtor的原型=父项的原型

子项的superClass_=父项的原型

子项原型的构造器=子项

子项的base属性=函数

函数传了2个参数,

如果调用时传入了超过2个函数,var args= 当参数超过两个之外的参数之外的参数组成的数组。

因为传入的参数本身不能组成一个数组,不能用数组的截取方式slice,所以用call把所有参数转化成数组,再从第三个参数开始截取,剩余的参数变成数组。https://www.cnblogs.com/dingxiaoyue/p/4948166.html

将父项的原型[方法]应用到me上,传递参数args。如果me上有这个方法,回被替换,没有就会被添加。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

https://www.w3cschool.cn/wqf_web/wqf_web-x54328d9.html

返回这个方法的执行结果。

2.初始化用户媒体

人脸识别 tracking.js学习

① 使用MediaDevices.getUserMedia()方法获取视频轨道和音频轨道(如果需要)

getusermedia()不再工作在不安全的根源。要使用此功能,您应该考虑将应用程序切换到安全源,如HTTPS。

https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia

这里如果设置了video的width和height,会怎样?

② 如果成功,将返回的视频流赋给用户绑定的element的srcObiect上。

这个对象提供了一个与HTMLMediaElement关联的媒体源,有兼容问题

https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLMediaElement/srcObject

③ 如果失败,会定义一个错误信息,Cannot capture user camera.(无法捕获用户摄像机)

http://www.w3school.com.cn/js/js_errors.asp

3.测试对象是否为DOM节点

人脸识别 tracking.js学习

如果是node节点,返回节点类型 http://www.w3school.com.cn/jsref/prop_node_nodetype.asp

       如果节点是元素节点,则 nodeType 属性将返回 1。

       如果节点是属性节点,则 nodeType 属性将返回 2。

否则,如果不是DOM节点,测试对象是否为“window”对象。

如果传入的是div怎么办,之后怎么追踪?

4.测试对象是否为“window”对象

人脸识别 tracking.js学习

例:b= !!(a)   

       a默认是undefined,!a是true,!!a则是false,

       所以b的值是false,而不再是undefined。这样写可以方便后续判断使用。

所以,!!(a)的作用是将a强制转换为布尔型(boolean)。可用在判断a是否非空上。

当参数o存在,并且有alert属性 和 document属性 时返回 true,否则返回false。

5.使用'document.queryselector'从css3选择器中选择一个dom节点

人脸识别 tracking.js学习

如果selector是dom节点或者window对象,返回selector。

否则返回匹配到的第一个元素。

querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。如果没匹配到,返回null

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelector

querySelector() 方法是document独有的吗?

opt_element如果不传就是document,如果传别的会有问题?

6.追踪器

人脸识别 tracking.js学习

① 传入参数,找到追踪的元素,绑定定义的追踪器,参数。

例:

人脸识别 tracking.js学习

人脸识别 tracking.js学习

② element=找到的第一个dom对象

③ 判断 如果element和tracker不存在,定义错误。

④ 判断元素的节点名小写 选择一种追踪方式。

        如果是画布,返回追踪画布 人脸识别 tracking.js学习

        如果是图像,返回追踪图像人脸识别 tracking.js学习

        如果是视频,如果参数里有camera:true,请求打开摄像头 人脸识别 tracking.js学习

                             返回人脸识别 tracking.js学习

        如果都不是,定义错误。

7.追踪画布

 

8.追踪画布内部

 

9.追踪图像

 

10.追踪视频

 ① 创建画布 

② 定义画布的宽高,加监听事件,当屏幕变化时,会重新定义。

     offsetWidth实际获取的是盒模型(width+border + padding)

③ 定义requestId

     定义请求动画帧 requestAnimationFrame_

            如果当前video加载就绪,在画布上画图。调用tracking的追踪画布内部的属性。

            再执行一遍这个方法requestAnimationFrame_() 。

     递归了,如果没有停止,会一直执行下去。

           readyState属性获得视频的就绪状态 http://www.w3school.com.cn/tags/av_prop_readystate.asp

           人脸识别 tracking.js学习

 

二.各自方法

14.对象跟踪器实用程序