我正在研究HTML5运动跟踪,目前我正在使用绘图上下文的方法drawImage来捕获当前帧并在其上添加“tracker”对象。
你可以在这里看到示例代码:
你可以在这里看到示例代码:
ctx.drawImage(video, 0, 0);
var cat = new Image();
cat.src = 'cat.png';
cat.onload = function() {
ctx.drawImage(cat, 150, 190);
}
但我的解决方案也应该支持Safari iOS浏览器,但这是来自浏览器文档的内容:
他们提出了以下解决方案:注意:目前iOS不支持将视频作为canvas drawImage()方法的源。
所跟随的对象的坐标来自JSON文件(我有每个帧的信息),这里是一个帧的JSON内容:使用视频作为drawImage()函数的源需要大量系统资源。一般来说,最好使用video元素而不是canvas元素来显示视频。如果要在移动的视频上叠加canvas文本或动画,则最好在canvas后面使用video元素 - 视频通过canvas的透明背景显示,而无需在canvas上显示视频。
"frames": {
"0": [{
"i": 0,
"x": 686.356,
"y": 192.797
},
{
"i": 2,
"x": 1036.4,
"y": 194.135
},
{
"i": 3,
"x": 566,
"y": 113.5
},
{
"i": 4,
"x": 357,
"y": 98
}],
我在这里跟随4个对象。
所以我在想,什么方法会更好?是捕捉每一帧并在画布上添加以下对象,还是使用透明画布并仅绘制以下对象。
如果我的解释不清楚,您可以查看以下视频:http://codeazur.com.br/stuff/motiontracking/
“以下对象”指的是橙色物品。