一直对人工智能有着极大兴趣,无奈脑袋再大也无法想象那是一种怎样的算法实现机制,因此无论是遇到声音识别、色彩识别还是人脸检测的需求,我都说不会、不知道、不了解!
今天给大家介绍的tracking.js库带来不同的计算机视觉算法和技术,在浏览器环境。通过使用现代的HTML5规范,我们让你做实时色彩跟踪,人脸检测以及更多,小伙伴们终于可以发挥自己无限的想象力了。
下面是一些效果图。
这个游戏 呢 是开启摄像头后,根据玩家头的转向进行控制的,非常有意思。
虽然看上去挺高深的但是使用起来却很方便。
第1步:创建示例文件
在此步骤中,您将创建下示例文件examples/
夹到您解压的本地驱动器下的项目。进入该目录,并创建一个名为在你喜欢的编辑器文件。起始文件看起来像这样:first_tracking.html
<!doctype html><html><head>
<meta charset="utf-8">
<title>tracking.js - first tracking</title>
<script src="../build/tracking-min.js"></script></head><body>
<script>
// Start tracking here...
</script></body></html>
步骤2:选择需要的功能
现在,你有示例文件创建的,它的时间来选择你要在行动中看到什么技术。有此页面上提供了几个例子,第一个,的跟踪,仅仅是一个抽象类的其他跟踪技术基础,不能被实例化。一个很好的选择下手的是ColorTracker,复制本部分提供的片段,并贴到您的示例文件,它到底应该是这个样子:first_tracking.html
<!doctype html><html><head>
<meta charset="utf-8">
<title>tracking.js - first tracking</title>
<script src="../build/tracking-min.js"></script></head><body>
<video id="myVideo" width="400" height="300" preload autoplay loop muted></video>
<script>
var colors=new tracking.ColorTracker(['magenta', 'cyan', 'yellow']);
colors.on('track', function(event) {
if (event.data.length===0) { // No colors were detected in this frame.
} else {
event.data.forEach(function(rect) {
console.log(rect.x, rect.y, rect.height, rect.width, rect.color);
});
}
});
tracking.track('#myVideo', colors); </script></body></html>
这个例子会要求你出现在它的前置摄像头和跟踪品红,青色和黄色。看看你的周围,抓住这些颜色中的一种匹配的任何对象,看你的浏览器的控制台,它应该显示所有找到的对象的坐标。
项目的官网是:https://trackingjs.com/docs.html#introduction
或者直接用github搜tracking.
就这么多,enjoy it!!!
inux简单操作命令回顾:
pwd# 显示当前工作目录的绝对路径
ls # 列出目录内容
ls -a # 列出全部文件,包括隐藏文件
ls -l # 列出全部文件,包括文件属性和权限等
cd# 来切换目录
cd ~ # 回到自己的家目录
cd - # 回到上一次所在目录
cd .. # 回到当前目录的上一级目录
mkdir # 创建一个新的目录
mkdir -p # 创建多层目录
touch # 加文件名来创建空文件
rm # 删除指定的文件
rm -f # 删除指定的文件而不提示确认
cat # 查看文件内容,从第一行开始显示,适合查看小文件
cat -n # 查看文件内容同时显示所有的行号,包括空行
more # 分屏查看文件内容。空格向下翻一页,回车向下翻一行,Ctrl+F向下滚一屏,Ctrl+B返回上一屏,=输出当前行号,:f输出文件名和当前行号,q离开more不再显示
less # 分屏显示文件内容,根据显示需要加载内容,适合查看大型文件。空格向下翻一页,pgup向下翻一页,pgdn向上翻一页,/字串向下搜寻字串n向下找N向上找,?字串向上搜寻字串n向上找N向下找,q离开
head -n # 查看文件头数行内容
tail # 查看文件尾部内容,默认显示后10行内容
tail -n# 查看文件尾部数行内容
cat 文件名1>文件名2 # 重定向>将命令结果重定向到一个文件,本应显示在终端上的内容保存到指定文件夹中;>>追加内容
| #管道,把左边的命令返回的结果交给右边命令进行处理
find 搜索范围文件路径 -name 指定的文件名 # 根据名称查找搜索范围下指定格式的文件
find 搜索范围文件路径 -user 用户名 # 根据用户名查找搜索范围下用户名为指定用户名的文件
find 搜索范围文件路径 -size +n # 根据文件大小查找搜索范围下文件大小大于n的文件(+n:大于,-n:小于,n:等于)
ls | grep -n 原文件 # 查找某文件在第几行。用ls查找看的时候也要用ls,即两个要匹配否则行号会出错
Linux环境使用建议只进行Jmeter场景的执行操作,脚本编写验证的过程建议在Windows下完成后上传到Linux服务器上。
使用目的:防止由于网络问题导致的压不上去的问题,由于客户端资源使用情况导致压力压不上去的问题。
jdk环境部署,配置环境变量,验证安装是否成功java -version
jmeter环境部署,配置环境变量,验证安装是否成功jmeter -v
将本地生成的jmx文件上传至linux平台,执行命令:
jmeter -n -t 脚本文件 -l 日志文件 -e -o 指定目录
DOS命令执行测试脚本生成html格式的测试报告
jmeter -n -t /home/yace/scrpts/data.jml -l result.jtl 生成日志文件可在jmeter GUI界面,聚合 里打开
-n:no-gui,无图形化界面执行,命令行模式
-t:jmx脚本文件路径
-l:日志,jtl结果文件存放路径
-e:生成
-o:指定html报表生成到哪个文件夹下
jmeter -g result.jtl -o report
-g:指定jtl文件路径
-o:指定html报表生成到哪个个文件夹下
Jmeter自带了一个生成HTML报表的功能,功能强大,生成的报表中既包含了类似聚合报告中的最终汇总结果,还有各请求的性能曲线图,包括TPS、响应时间等等。
大多情况下,Jmeter自带的HTML报表功能已经能满足我们的需求。但是,此功能有一个比较大的缺陷,那就是性能比较差,换句话说就是分析很慢。TPS越高、执行时间越长、生成的jtl文件越大,分析的越慢。
相比Jmeter自带的HTML报表,它具备以下优点:
1、统计结果所需时间很短,速度比原生报表快将近30倍。
2、简化了一些不必要的性能数据统计,保留了核心性能数据,如,TPS统计、平均响应时间、90%、95%、99%响应时间、错误率,以及TPS曲线图、平均响应时间曲线图。
java -jar jmeter -graph.jar jtl 文件路径 统计间隔时间(秒)
java -jar jmeter -graph.jar result.jtl 10
ls 查看目录内容
tar -cvzf 压缩包包名 文件1 文件2....
-c生成档案文件,创建打包文件
-v列出归档解挡的详细过程,显示进度
-f指定档案文件名称
-t列出档案中包含的文件
-x解开档案文件
-z有gzip属性的
-j有bz2属性的
打包,压缩,解压,解包
tar –cvf jpg.tar *.jpg // 将目录里所有jpg文件打包成 jpg.tar
tar –czf jpg.tar.gz *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
tar -zxvf jpg.tar.gz -c batr //解压
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar –xjf jpg.tar.bz2 -c jtar //解压
zip -r zz.zip *.txt //zip -r zz *.txt,zz代表要生成的压缩文件,不需要扩展名,会自动生成zip扩展名,-r压缩所有子目录
unzip -d zz file.zip // 解压 zip,-d解压目录
压缩率zip<gzip<bzip2
通用性zip>gzip>bzip2
拷贝:cp 1.txt a //将1.txt文件复制到a文件夹下
移动:mv abc.txt a //将abc.txt移动到a文件夹下
cat -n sys.log | tail -n +100000 | head -n 20 #-n显示行号,查看日志特定行数范围内容
cat order.log | grep '下单成功' lwc #lwc行数、字数、字节数
1、linux修改hosts
sudo是linux系统中一种很常见的权限管理机制,允许非root用户以特定的身份执行特定的命令。
由于hosts文件位于系统目录下,普通用户无法直接修改。因此,我们需要进入root用户模式。在终端中输入以下命令:
sudo su
vi /etc/hosts
修改完hosts文件后,按下Esc键退出编辑模式,然后输入:wq命令保存并退出。
2、网络检测 ping www.baidu.com
3、查找文件find、grep
4、查看某日志特定行数范围内的内容
cat -n sys.log | tail -n +10000 | head -n 20
第一个数字代表日志起始行数 第二个数字代表要看的内容有多少行
cat xiadan.lpg | grep '下单成功' | wc lwc行数字数字节数
引用类型可动态创建属性(即先创建对象,后添加属性和方法)。
var obj=new Object();
obj.name=“伍德春”;
如果变量是基本类型值,那么是复制结果,更改其中一个不会影响另一个:
"use strict";
var num1 =5;
var num2 = num1;
num1 =10;
alert(num2);
num1更改为10以后,num2还是5,并不受其影响。
如果变量是引用类型的值,那么两个变量都指向同一对象(即新复制的变量也是指向同一内存地址的):
var num1 = new Object();
var num2 = num1;
num1.name = "伍德春";
alert(num2.name);
所有函数的参数都是按值传递,即基本类型在函数中修改变量的值时,外部原变量不会更改,因为是修改的复制对象;而引用类型由于是指向的同一地址的内容,所以在函数内部修改后,外部的也变化了。
function change(v1) {
v1=10;
}
var v=20;
change(v);
alert(v); // 20
function changeObj(obj){
obj.name="伍德春";
}
var person=new Object();
person.name="李四";
changeObj(person);
alert(person.name);
结果=变量 instanceof 类型
书中描述太复杂了,如果画两个圈,外面一个,里面一个,那就是内部可以访问外部,但外部不能访问内部。
这两个语句会改变作用域:try-catch、with
4.3 垃圾收集
4.3.1 标记清除
4.3.2 引用计数
循环引用时会出错,需要手动断开,myObject.element=null(许多语言中是手动释放)
*请认真填写需求信息,我们会在24小时内与您取得联系。