最近一只松鼠注意到我们正在等待突袭的坚果盒差不多一年。但是,当我们的松鼠这里有点臭鼬,我需要提出一种方法来接近拍摄他们的好照片。
记住我的项目,我使用旧的Sony Alpha Nex-5T进行3D打印时间,我决定根据这款相机的WiFi遥控器功能设置照片陷阱,它完美地工作。
这应该适用于任何索尼alpha,因为NEX-5R,包括A6000系列和A7S中的任何一个都应该在任何带有WiFi访问相机的计算机上运行。在我的情况下,它是一个备用覆盆子pi。
所以,要清楚:了解你可以从这个设置中所期待的内容,让我描述我的经历。我写了一天晚上的照片陷阱的代码,并在第二天早上设置了相机,然后们在孩子们前往游乐场。十分钟后,我可以在手机上看到以下图片(注意:将照片放到手机上不是脚本的一部分。我只是将脚本的输出文件夹同步到我的nextCloud实例。):
为实现这一目标,我在三脚架上进行了相机,并在视线控制着相机附近的覆盆子PI,当鼠鼠处于视线时自动拉动扳机,并下载了所得图片的预览图像。不需要更多硬件,除了保护齿轮免受盗窃和天气;它不需要更多的监督。
为了避免水分,我将设置放入我的车库过夜,但除此之外,我可以整天留下它,图像刚刚进入。
相机需要使用WiFi远程功能成为索尼alpha。因此,如果您的相机可以由成像边缘移动应用程序控制,它应该工作,并根据索尼的兼容性列表,这应该是NEX-5R的任何索尼alpha。
接下来,您需要一个可以运行脚本的计算机,并连接到相机的WiFi。由于脚本是在Python中编写的,只要它具有WiFi并且可以运行Python,就应该在任何操作系统上的任何笔记本电脑上都有可能。不幸的是,一如既往地,在Windows上运行Python是非常痛苦的。是的,有很多教程,一旦设置它并不是那么难,但与“刚刚运行它”过程相比,在Linux和麦斯卡斯上,它是一个噩梦。
我使用了一个不使用的备用覆盆子pi 3,因为我用覆盆子pi 4替换了我的家庭自动化。我很确定一个较旧的覆盆子PI 2也足够快,但你需要将WiFi坚持下来,因为它没有内置WiFi。
如果您不使用可以在拍摄照片的同时在USB电源上运行的较新的索尼相机之一,您可能希望将假电池AC适配器添加到安装程序中。这个想法是让它在没有参与过经营的情况下运行,并且可以稍后收集图像。它将在相机的电池上工作,但耗尽快速。由于您在附近需要计算机或覆盆子PI,因此您需要一个电源解决方案,因此将相机插入电源并不多额外询问。
如下,您可以使用脚本拍摄的场景存在一些限制。触发机制基于在模糊或统一背景前面的焦点的动物。无论如何,您肯定希望使用手动焦点并瞄准您希望动物的位置。您还希望以一定角度拍摄,该角度呈现出良好的背景分离,并将光圈宽松打开,以便正确模糊背景。
其他对象也可能是焦点,但是重要的是,除非该部分被动物占据,否则大部分图像是模糊的。
当一切都到位并且您启动脚本时,它将首先尝试通过其WiFi远程功能连接到相机。这是一个简单的HTTP REST API,由SONY良好记录,因此我很容易使用相机进行握手,请求取景器的视频流,并在检测到动物时触发实际照片。
唯一略微棘手的部分是检测灰鼠(或一般动物)。为此,我使用OpenCV。它是一种用于图像处理和计算机视觉的各种工具的开源库,如果您之前已经听说过,则可能考虑了面部识别的复杂深度学习算法。但是,幸运的是,有一种更简单的方法来检测灰鼠,而不是教一个用千兆字节的松鼠图片如何识别灰鼠。
相反,我们使用了我们具有适当的相机和如上所述的场景的事实。脚本而不是实际识别图像中的任何功能,而不是确定焦点中的大量图像。这是一个相当简单的数学任务,可以在很少的代码(带OpenCV)中完成。我们只需查看Laplace操作员在图像的灰度版本上的标准偏差。
如果“标准偏差”也不是“拉普拉斯频道”对您有任何意义,请不要担心。拉普拉斯算子是“梯度”的“分歧”,所以人们可以说它是附近像素之间变化方向之间亮度梯度的指示器。在模糊或均匀的背景上,没有太大的梯度,但是如果尖锐有很多细节,那么像素很快替代,并且梯度遍布整个地方。它基本上是自动对比自动对比的作品。
因此,脚本计算预览视频的每帧的“焦点”的这种度量,并将此值的滑动平均值超过一分钟。随着当天的照明变化,该值稍微改变和漂移,并且这种平均值将跟踪空场景的当前“基础”焦点。但是当一个松鼠进入框架并占据差别偏离焦点的区域时,这种“焦点测量”突然增加了显着增加。这就是脚本触发相机的时候。
我认为这是一个很好的例子,其中一个简单的方法比将所有东西扔进机器学习算法都要好多了。除了易于设置和代码外,我希望这个代码也可以在相当慢的设备上运行。哦,当然它触发了一些有趣的东西 - 不仅仅是松鼠。
准备相机是最简单的部分:您只需要启用WiFi控制功能。在旧模型上,这是作为相机应用程序和较新的模型实现,它只是“设置”菜单中的选项,以便使用智能手机进行控制。
下一步可能是唯一棘手的部分。您需要将计算机/笔记本电脑/覆盆子PI连接到相机的WiFi。对于这个简单的设置,不应该太难。相机显示网络的名称(SSID)和按钮按钮也显示了密码。您可以简单地输入以下您的WiFi连接,因为您将在设备上设置任何其他WiFi连接。
有问题的部分是相机只允许遥控器,如果它运行自己的热点并且具有一些令人讨厌的后果,因为这意味着您的笔记本电脑和PI无法同时连接到您的“正常”WiFi。在一台笔记本电脑上,这通常意味着它将在控制相机时脱机,并且由于“缺乏互联网”,您可能需要防止操作系统连接到默认WiFi。
Warning: Can only detect less than 5000 characters
好吧,我非常简单的设置的一个问题是,松鼠往往会受到我旧的NEX-5T的响亮噪音令人害怕的害怕,所以你可能想要使用更长的焦距来将相机放开或使用其中一个较新的索尼alphas可以选择使用它们的电子百叶窗,根本没有噪音。
我真的很喜欢剧本可以保持简单的事实,但它可能会做出限制。由于它仅依赖于松鼠将最终作为唯一具有非常模糊的背景的对象,因此您仅限于这些场景。虽然这些照片看起来很棒,但如果你试图抓住那些没有被占据这样的狭窄空间的动物,或者如果你想在背景中有更多细节(就像在其自然栖息地显示动物)的那样,那就不起作用。
因此,虽然我想取笑我的解决方案与计算复杂的大鼠检测系统的方式有多么简单,但更复杂的算法也可能产生这种镜头。我的脚本可以很容易地适应任何识别逻辑,从帧之间的简单运动检测到基于深度学习的特定动物的识别。如果您在该地区有一点经验,请将我的小代码剪掉并开始玩它。我很乐意看到并分享更多的高级版本。
关于作者:Sebastian STAACKS是一个物理学家,APP的开发人员“Phyphox”,父亲的父亲,并将其余的空闲时间与硬件,3D打印,编码和摄影的项目一起花费。本文最初发表于此。