少儿编程Scratch3.0教程——扩展篇(视频侦测)

上节课学完了扩展模块中的文字朗读和翻译,这节课我们接着来学习另外一个扩展模块,视频侦测。视频侦测积木可以利用你电脑上面的摄像头,来侦测画面中物体的运动量和运动方向。

这篇文章主要分为2个部分:

1、使用视频侦测

2、改编谷歌小恐龙游戏

第一,使用视频侦测

和之前的扩展积木一样,要使用视频侦测扩展模块,你首先要把它添加进来。因为要使用你电脑上的摄像头进行侦测,所以当你第一次选择这个模块时,可能会出现一个系统弹窗,询问你是否允许Scratch使用摄像头,你要允许之后才能正常使用该模块。

添加进来之后,你会看见在自制积木下面多了一个视频侦测分类,它的里面总共有4个积木块。

第一个需要使用的是**...摄** 像头 积木,这里面有三个选项,关闭开启镜像开启

当你选择开启摄像头时,舞台背景会变成摄像头拍摄到的画面,此时的你如果正坐在电脑摄像头前,就会成为舞台背景的一部分。

当你选择镜像开启摄像头时,舞台中的画面就会像在镜子中一样左右颠倒。如果你用手在摄像头前划过,你会发现舞台中手的移动方向和真实的方向也是相反的。当你想给自己的运动游戏增加难度时,就可以考虑使用它。

当你选择关闭摄像头时,摄像头就会停止拍摄,舞台的背景也会回到原来的模样。

当你打开摄像头之后,你还可以使用**将视频透明度设为...**积木来调整视频画面的透明度。设置为0时,背景中的视频画面最清晰,当数字变大时,画面会开始变的透明,当数字为100时,视频画面会全部消失。

接下来,就是最重要的相对于...的视频... 积木。第一个选项框可以选择角色舞台 ,第二个选项框可以选择运动方向。使用这个积木就可以侦测到摄像头中物体的运动量和运动方向。

当你选择运动时,只要有物体在摄像头中移动,这个积木就会返回一个数字。背景中移动的物体和幅度越大,返回的数字就越大。整个画面如果是完全禁止的,它将会返回0。

注意观察下面视频中我的身体移动时,最大值和运动量两个变量的变化情况。

当你选择方向 时,它会根据物体移动的方向返回一个数字。这里的数字与面向...方向积木中所填的数字类似,当物体向上移动时,返回的数字接近0,向右移动时,返回的数字接近90,向下移动时,返回的数字接近180,向左移动时,返回的数字接近-90。

除了可以在第二个选项框中选择运动和方向,你还可以在第一个选项框中选中角色或者背景。它们的区别是,当你选择背景时,会侦测整个背景画面中的物体是否在运动,而选择角色时,只会侦测与角色重合部分的物体是否在运动。

注意观察下面视频中,我的手碰到角色和没有碰到角色时,最大值和运动量两个变量的变化情况。

当你在使用时可能会发现,视频侦测的灵敏度很高,那怕你只是非常微小的移动,相对于...的视频... 积木也会返回一个大于0的数字。因此,当你希望它不要太灵敏时,就可以使用**当视频运动 > ...**积木,看着它的形状,你一定能猜出来它也是一个事件积木吧。只有当你的运动量大于某个数字时,才会触发这个事件,从而避免因为视频侦测太灵敏,导致你的游戏无法正常运行。

除了使用这个事件积木之外,你还能利用循环、如果那么和运算积木来配合使用,达到相同的效果。它们的区别就类似于,事件积木中对按键的侦测,与利用循环和如果那么积木对按键的侦测的区别。

如果你忘记了它们之间具体有什么不同,可以重新看看少儿编程Scratch3.0教程------05 事件积木(基础知识)少儿编程Scratch3.0教程------07 侦测积木(基础知识)这两课的内容。

第二,改编谷歌小恐龙游戏

介绍完了视频侦测积木的用法,接下来我们就利用它来改编少儿编程Scratch3.0教程------10 自制积木(项目练习)中所完成的小游戏,谷歌小恐龙。如果你还没有看过,建议你先跟着教程把之前的游戏做一遍。

在之前的谷歌小恐龙游戏中,我们是通过空格键来控制小恐龙跳跃和开始游戏。程序猿因为大部分时间都坐在电脑前对着屏幕,导致颈椎经常会出现问题。现在,我们就利用视频侦测积木,通过扭动脖子来控制游戏。

改编的地方有两处。第一,点击绿旗后,我们通过向左扭头来开始游戏。第二,开始游戏后,我们通过向上抬头来控制小恐龙跳跃。

好了,既然要通过向左和向上扭头来玩游戏,那你需要考虑的第一个问题就是,如何来判断你是否在向左和向上扭头?

暂停一下,打开之前做好的谷歌小恐龙游戏,自己先来尝试完成它。

我们在第一部分已经说过,可以通过相对于 舞台 的视频 方向积木返回的数字来判断视频中物体的移动方向。数字接近-90就是向左移动,数字接近0就是向上移动。需要注意的是,它返回来的数字很少会刚好等于-90或者0,所以最好将数字放在某一个区间范围内进行判断。

例如,当返回值 < -70并且返回值 > -110 时,就判断为向左扭头,当返回值 > -20并且返回值 < 20时,就判断为在向上抬头。当然这里举例的区间并不是固定的,你需要在开发游戏时亲自测试,选择一个合适的区间值。

接下来,我们就一起来看看需要如何进行修改。在这之前,先来看看原来的小恐龙代码长什么样。

之前的游戏是通过当按下空格键积木做事件监听,每当按下一次就执行一次跳跃,并且在跳跃积木中去启动游戏,那现在需要修改的也就是这个事件积木了。需要将它替换为视频侦测积木的返回值,当返回值在上面说的判断区间时,去执行启动游戏和跳跃积木就可以了。

这里已经将跳跃和启动游戏分开执行,所以可以把原来跳跃里面的启动游戏积木删除掉。

接下来,需要考虑的是,选用什么事件开始对视频方向进行侦测。这里可以有两种选择,一种选择是使用**当视频运动 > ...**积木,在里面设置一个合适的运动量大小,这样既可以避免微小动作触发事件,也可以在该事件下面直接执行上面的方向侦测。但是跟其他事件积木一样,因为它的侦测频率比较慢,可能会出现连续扭头不能触发事件的情况。

第二种方式,使用当绿旗被点击事件,然后将上面的方向侦测放进循环中。为了避免微小动作触发方向判断,你还可以在方向判断外层加上一个运动量的判断,当运动量大于某个数字时,才去执行方向侦测。

最后,将原来的当按下空格键事件删除掉,谷歌小恐龙就改编完了,完整的代码变成下面这样。

除了上面的改编方式,你还可以根据抬头的运动量来控制小恐龙跳跃的高度,这个功能就留给你自己来完成了。

相关推荐
GEO AI搜索优化助手6 小时前
未来图景:信息传播链的生态重构与长期影响
人工智能·搜索引擎·重构·生成式引擎优化·ai优化·geo搜索优化
adaAS14143156 小时前
【深度学习】【目标检测】使用RetinaNet-R101-FPN模型实现建筑设备物体检测_1
人工智能·深度学习·目标检测
拉姆哥的小屋6 小时前
基于改进条件GAN的高分辨率地质图像生成系统
人工智能·神经网络·生成对抗网络
serve the people6 小时前
tensorflow Keras Sequential 模型
人工智能·tensorflow·keras
RebeccaGuan08086 小时前
泛微.采知连知识管理平台深度应用DeepSeek,自动采集数据,让问答更安全·准确
人工智能·智能问答·知识管理·deepseek·知识采集
元让_vincent6 小时前
论文Review 3DGS综述 | 南京大学 | 3DGS Survey, Technologies Challenges and Opportunities |(二)扩展、模块增强、其他技术讨论挑战
人工智能·数据挖掘·综述·3dgs
六行神算API-天璇6 小时前
数字人“个性化”背后的玄机:大模型微调与RAG实战解析
大数据·人工智能
永远都不秃头的程序员(互关)6 小时前
大模型Agent核心架构拆解:从原理到可落地的智能任务规划器开发
人工智能