论文部分内容阅读
说起“电子眼”,司机们都不陌生。遍布城市各道路路口的“电子眼”(如图1),在维护交通秩序的工作中发挥了重要的作用。但是我并不是要讨论“电子眼”原理之类的问题,而是尝试用摄像头来做一个“电子眼”,研究如何实现可触发拍照。
● 触发拍照的条件分析
“电子眼”的核心功能在于触发拍照。但是如何触发呢?不同的触发条件,要采用的解决方案肯定是不一样的。如果仅仅希望按下鼠标或者键盘就拍照,我们随便找一款支持拍照或者截图功能的摄像头软件就能实现,如下页图2所示的是支持拍照功能的“Juncy魔镜之家”工作界面。
顺便提一下,makey makey和酷乐宅都可以模拟鼠标、键盘的动作,结合“魔镜之家”之类的摄像头软件,我们完全可以不用编程,就能实现用户触碰一下任何可以导电的物体,随之摄像头自动保存照片的功能,其原理如下页图3所示。
首先要导入两个库,processing.video为摄像头的库,processing.serial则为串口通讯的库。因为Processing库的使用一般都比较简单,所以代码并不复杂。具体的代码如下页图6所示。
为了让Processing保存的图片不会被覆盖,我写了一个getfile( )函数,用系统时间和程序运行时间组成一个有规律的文件名。
注意:如果你直接运行上述的代码,Processing可能会给出错误提示。一般来说,是因为你的计算机没有串口设备引起的,安装Arduino的驱动后就可以正常运行。
● Arduino端的触发器制作
触发器其实就一个传感器加Arduino核心板。为帮助大家打开思路,在左表中我选择了几个常见的传感器进行说明。当然,如果要实现比较复杂的条件判断,可能需要更多的传感器组合。
如果仅仅是单个传感器,Arduino的编程是很简单的。只要在高电平的状态下,发送1给Processing即可。用ArduBlock、Mixly等图形化编程软件,都能实现这样的功能。我将红外热释电传感器接到Arduino的4号引脚,具体的代码如下页图7所示。
● 效果测试和优化
将程序下载到Arduino后,就可以测试了。下页图8为程序界面,下页图9为定时拍摄并保存的照片。
需要提醒大家的是,照片拍摄的质量和摄像头像素和速度有关系。据说市场上已经有帧数高于150/秒的摄像头。从功能上看,我们已经完成了预设的目标,实现了类似“电子眼”的触发拍照。如果把代码迁移到树莓派之类的迷你PC里,这个作品就有了一定的应用价值。其实,利用Processing强大和简介的视频处理库,我们还可以做更多和摄像头相关的应用,如延时摄像、定时摄像,等等,请关注下一期的文章。
● 触发拍照的条件分析
“电子眼”的核心功能在于触发拍照。但是如何触发呢?不同的触发条件,要采用的解决方案肯定是不一样的。如果仅仅希望按下鼠标或者键盘就拍照,我们随便找一款支持拍照或者截图功能的摄像头软件就能实现,如下页图2所示的是支持拍照功能的“Juncy魔镜之家”工作界面。
顺便提一下,makey makey和酷乐宅都可以模拟鼠标、键盘的动作,结合“魔镜之家”之类的摄像头软件,我们完全可以不用编程,就能实现用户触碰一下任何可以导电的物体,随之摄像头自动保存照片的功能,其原理如下页图3所示。
首先要导入两个库,processing.video为摄像头的库,processing.serial则为串口通讯的库。因为Processing库的使用一般都比较简单,所以代码并不复杂。具体的代码如下页图6所示。
为了让Processing保存的图片不会被覆盖,我写了一个getfile( )函数,用系统时间和程序运行时间组成一个有规律的文件名。
注意:如果你直接运行上述的代码,Processing可能会给出错误提示。一般来说,是因为你的计算机没有串口设备引起的,安装Arduino的驱动后就可以正常运行。
● Arduino端的触发器制作
触发器其实就一个传感器加Arduino核心板。为帮助大家打开思路,在左表中我选择了几个常见的传感器进行说明。当然,如果要实现比较复杂的条件判断,可能需要更多的传感器组合。
如果仅仅是单个传感器,Arduino的编程是很简单的。只要在高电平的状态下,发送1给Processing即可。用ArduBlock、Mixly等图形化编程软件,都能实现这样的功能。我将红外热释电传感器接到Arduino的4号引脚,具体的代码如下页图7所示。
● 效果测试和优化
将程序下载到Arduino后,就可以测试了。下页图8为程序界面,下页图9为定时拍摄并保存的照片。
需要提醒大家的是,照片拍摄的质量和摄像头像素和速度有关系。据说市场上已经有帧数高于150/秒的摄像头。从功能上看,我们已经完成了预设的目标,实现了类似“电子眼”的触发拍照。如果把代码迁移到树莓派之类的迷你PC里,这个作品就有了一定的应用价值。其实,利用Processing强大和简介的视频处理库,我们还可以做更多和摄像头相关的应用,如延时摄像、定时摄像,等等,请关注下一期的文章。