我一直在网上寻找例子,看看风险感知考试是如何编码的,但没有效果。有人能告诉我关于危险感知测试编码的要点吗?或者网络上是否有类似的例子?
在英国,危险感知考试是一种必修考试,作为获得驾驶执照的一部分。它涉及从司机的角度看视频,如果你注意到危险,点击视频。考试记录了你注意到了多少危险,并且会给你一个分数,比如45个中的40分。这里有一个例子:http://theory-test-online.co.uk/free-hazard-perception-test-demo.htm,我想看看如何记录视频中的点击率。点击还必须在一定的时间框架周围的危险,以计数为正确。
发布于 2015-03-17 14:51:47
这个问题很笼统,也很具体。这是普遍的,因为你的目标可以在很多方面实现,而具体的原因是你询问了一个非常具体的考试类型。以下是一些让你开始学习的信息:
您可以使用HTML5视频或类似于Video.js的东西来播放视频并控制其位置。
您可以使用addEventListener或jQuery .click()侦听单击事件,每次单击时检查当前视频位置,查看单击是否应出现在某个范围内,并相应地计数这些点(添加一个点,当用户单击并减去时,确保每个危险不超过1个点)。
数数分数可能很有挑战性,但以下是如何做到的:
假设您有一系列正确的危险启动-停止间隔,以及它们是否被单击的信息,以及在没有危险的情况下点击的一些惩罚点:
var harards, penalties;
hazards = [
{
start: 1,
stop: 2,
passed: false
},
{
start: 4,
stop: 5,
passed: false
},
{
start: 8,
stop: 10,
passed: false
}
];
penalties = 0;(当然,对于真实数据,它更像是:start: 38.8, stop: 42.3等。)现在,对于每一次单击,您都可以检查视频位置并使用如下所示进行测试:
function testHazard(time) {
var i;
for (i = 0; i < hazards.length; i++) {
if (time >= hazards[i].start && time <= hazards[i].stop) {
hazards[i].passed = true;
return;
}
}
penalties++;
}如果点击是在持续时间内,它将标记每一个危险通过,或增加处罚,否则。
现在计算点数很简单:
function countPoints() {
var i, points = 0;
for (i = 0; i < hazards.length; i++) {
if (hazards[i].passed) {
points++;
}
}
return (points - penalties);
}见:演示 on JS Bin。
另外一个提示:您可能希望使用滑鼠事件(或jQuery .mousedown()),而不是单击事件,以使其与双击等操作良好。例如,考试来自你的评论似乎无法很好地处理双击和多次单击,并打印:“您以不可接受的方式响应此剪辑!”另外,我也不确定这次考试是否正确地计算了点击次数。我上面所写的代码对于任意数量的点击都应该很好,当人们单击时,当他们不应该点击时,只会产生更低(甚至是负)的点数,同时将一个危险期间的任何点击数作为一个点来计算。
一些有用的资源:
https://stackoverflow.com/questions/29101341
复制相似问题