使用Raspberry Pi,Python,OpenCV和TensorFlow构建陷阱相机





我坚信通过实践和创造新事物来学习。为了创造一些东西,您需要使您的工作愉快。



我将通过揭示我决定尝试基于Raspberry Pi创建陷井相机的原因来开始我关于新项目的故事。



我住在伦敦,我的花园常被当地的野生动物所光顾。这种情况经常发生,以至于我(一个狂热的园丁)逐渐感到不高兴。破碎的花盆,挖出的植物,吃的水果和蔬菜……



我在花园里看到小狐狸(它们很可爱),大狐狸,猫(不是我的猫),鸟。甚至有一次我被雀鹰拜访。



Sparrowhawk



夜幕降临时,还有谁还能爬进我的花园?





要在该图像中看到动物并不容易



,我还需要其他什么原因来创建基于Raspberry Pi,Python,TensorFlow等的陷阱相机?我的相机应该很好。



有人可能会说您不需要自己制作这样的相机,您可以购买现成的相机,该相机可以完美地完成观察野生动物的任务。



这是一个好主意,但不会那么有趣。



Raspberry Pi的摄像头模块



我首先研究了可以将什么类型的相机连接到Raspberry Pi单板计算机。



这些相机中最受欢迎的是那些使用MIPI连接器直接连接到Raspberry Pi的相机。这种类型的摄像头的优点是可以在摄像头和电路板之间非常快速地传输数据。还有一个易于使用的API与相机配合使用。 



我尝试了此API,发现它具有许多有用的功能,可让您在录制时录制视频和拍照。这使我可以使用简单明了的工具同时检测运动并录制视频。Raspberry Pi



共有三种摄像头模块... 下面是表格的缩写形式,具有这些模块的特征。

摄像头模块v1 摄像头模块v2 总部相机
净价 25美元 25美元 50美元
规模 约25×24×9mm 38 x 38 x 18.4毫米(不包括光学元件)
重量 3克 3克
影像解析度 500万 800万 1230万
视频模式 1080p30、720p60和640x480p60 / 90 1080p30、720p60和640x480p60 / 90 1080p30、720p60和640x480p60 / 90
Linux整合 V4L2驱动程序 V4L2驱动程序 V4L2驱动程序
C-API OpenMAX IL和其他 OpenMAX IL和其他
传感器 OmniVision OV5647 索尼IMX219 索尼IMX477
传感器分辨率 2592×1944像素 3280×2464像素 4056 x 3040像素
传感器工作区尺寸 3.76 x 2.74毫米 3.68 x 2.76毫米(对角线4.6毫米) 6.287 x 4.712毫米(对角线7.9毫米)


该表列出了官方相机模块,但是您可以找到可与Raspberry Pi一起使用的第三方相机。摄像头模块用于处理来自GPU Raspberry Pi传感器的数据。



由于使用相机模块时,Raspberry Pi本身参与图像处理,因此相机传感器的选择非常有限。每个传感器都有自己的API,因此支持不同类型的传感器并非易事。



弱光条件下的视频录制



我将创建一个用于观察野生动物的陷阱相机。因此,它的功能对于白天和晚上的工作都应该足够。也就是说,它必须具有能够在弱光条件下录制视频的传感器。非常希望它能传达被拍摄物体的真实色彩。在光线不足的情况下,相机模块v1和v2不能很好地工作。为了使他们能够在这种情况下移除某些东西,您需要使用IR照明并从其中移除IR滤镜。准备在弱光条件下拍摄的照相机的步骤取决于特定的照相机型号。但是这里还有另一个问题,那就是生成的图像具有粉红色的色调。使用此类相机时,您需要一种机制在白天拍摄时会激活IR滤镜,在夜间拍摄时会删除该滤镜。





白天在光线不足的情况下从Raspberry Pi相机拍摄的图像。



但是有一个新的Raspberry Pi相机,在表中称为HQ相机。但是,我不太确定它的“夜间”功能。它基于Sony IMX477传感器,在光线不足的情况下,与以前的相机相比,可以得到更好的图像。该传感器是否可以在黑暗中产生正确的彩色图像,我仍然要找出答案。但是我对相机的规格初步研究表明,它不可能做到这一点。



索尼Starvis是一款出色的相机传感器



索尼有一个特殊的摄像机传感器系列,主要用于视频监控。这是索尼Starvis。这些传感器是高度先进的设备,能够在低光照条件下以低至0.001 lux的质量提供高质量的彩色图像。勒克斯(lx)是用于测量照明度的单位。



为了更加清楚,我将举几个例子。几乎完全黑暗的是0.0001 lux。即:没有阳光,没有月亮和星星的光线,没有天空,没有人工照明。我不知道任何能够在完全黑暗中拍摄的相机传感器。



但是,如果天空晴朗,那么星星的照度为0.002 lux。尽管在这些条件下它仍然很暗,但Sony Starvis传感器能够在此光线的一半下进行拍摄。对我来说,这真是太神奇了。



这是维基百科页面,可以找到更多示例。



希望我能够向您传达这样的想法:Sony Starvis是用于陷井相机的理想传感器。



该传感器的主要缺点是没有用于Raspberry Pi的相机。但是,如果碰巧带有这种传感器的USB摄像机或IP摄像机,我会想一想并将其连接到Raspberry Pi。



事实上,我发现了这样的相机。



我不想在这个项目上投入太多,所以我在Aliexpress上从Sony Starvis购买了合适的IP摄像机。如果我没记错的话,我花了我20英镑。



比较适用于Raspberry Pi的相机和此相机,就像白天和黑夜比较。我一点也不夸张。找你自己。





带有Sony Starvis IMX307传感器的相机,在黑暗的房间中拍摄





Raspberry Pi v2摄像机-相同的房间,但视角不同



对于陷井摄像机和CCTV摄像机,能够在光线不足的情况下进行高质量的录制非常重要。



有人可能会说,在光线不足的情况下录制彩色视频并不重要,因此您可以使用简单的红外摄像机来拍摄。但是我无法使用红外照明,因为我要将相机放在室内,并通过窗户将其指向花园。而且,如果将红外源对准玻璃杯,玻璃杯会像镜子一样运转,并且相机会失明。



如果我们谈论Raspberry Pi的相机,那么它们非常适合一些简单的项目或学习新知识。但是,如果您至少完成了一些严肃的项目,那么您只需要使用质量更好的相机即可。



使用USB摄像头(甚至IP摄像头)开辟了全新的可能性。此外,如果您还拥有用于Raspberry Pi的常规相机,则可以将其用于一些人工智能实验。



为Raspberry Pi安装和配置相机



让我们将Camera Module v2连接到板上。实际上非常简单。





相机模块v2



相机具有蓝色和白色的电缆。它需要连接到板的CSI连接器。色带的蓝色面应朝向板的背面。



我使用了3D打印的相机机身。我在Thingiverse上找到了相应的文件。但是可以在例如亚马逊上找到非常便宜的合适案例。





相机外壳



现在该打开相机了。



打开Raspberry Pi后,您需要打开一个终端窗口。





终端



然后您需要执行以下命令:



$ sudo apt update


然后-这:



$ sudo apt full upgrade


这是为了确保开发板正在使用最新的Raspbian版本以及最新的补丁程序和更新。



之后,您需要在终端中运行以下命令:



sudo raspi-config




使用raspi-config



在这里,我们对该部分感兴趣Interfacing Options>P1 Camera然后,您需要选择一个命令Finish并重新启动Raspberry Pi。



使用raspistill拍照



相机现在应该可以使用了。让我们用进行检查raspistill再次打开终端,然后在其中输入以下命令:



raspistill -v -o test.jpg


这是我的相机拍的精彩照片。





Raspberry Pi的相机快照



使用raspivid进行视频录制



照片不错,但视频录制要好得多。这将为我们提供帮助raspivid



raspivid -o vid.h264


使用此命令可以录制5秒的视频。



如果您需要拍摄更长的视频,则此命令将需要传递一个参数-t,以毫秒为单位指示视频的持续时间。例如,以下命令可让您录制30秒长的视频:



raspivid -o vid.h264 -t 30000


设置流媒体



有趣的来了。为了查看摄像机“看到”的内容,可以使用以下命令:



raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264


它创建一个RTSP流,您可以从本地网络连接到它。



结果



既然我已经找到了Raspberry Pi的相机,我就可以进一步开发该项目,即在Raspberry Pi 4上安装TensorFlow,Open CV和Python并开始编写代码。我计划在下一篇材料中讨论这一点。如果您有兴趣,请访问我的YouTube频道,在这里您可以找到与此项目相关的视频。



您是否曾为Raspberry Pi使用相机?










All Articles