将树莓派打造成视频监控

源码下载:https://download.csdn.net/download/bibinGee/12186668

 

构成组件:

  1. CSI接口摄像头(千万别用USB摄像头,这个坑我已经趟过无数遍了,最后才转到CSI接口摄像头上)

  1. 树莓派3B+ 板卡,视频保存在板载SD上。(千万别用U盘保存视频,树莓派的USB驱动及硬件简直就是灾难设计,USB端口无端高温,USB设备无端断开,种种奇奇怪怪原因)

  2. Python软件开发需要的库:PyQt5, picamera, opencv

使用PyQy5制作一个简单的用户界面,包含开始按钮和停止按钮,亮度和对比度调整滑块,还有视频的保存长度。视频的保存长度与存储空间有直接关系,存储空间大的可以设置存储时间长一些。

利用picamera库打开摄像头,设定摄像头的分辨率和帧率

self.camera = PiCamera()
            
self.camera.rotation = 180
            
#setup resolution 640 x 480
self.camera.resolution = (640, 480)
            
#setup frame rate to 20 per sec.
self.camera.framerate = 20
self.rawCapture = PiRGBArray(self.camera, size=(640, 480))

视频的循环读取放在一个定时器中,定时器的时间间隔设置为20ms,比视频实际帧速稍微快一些。

self.timer.start(self.framerate, self)

用capture_contunous()这个方法读取摄像头的每帧视频

self.camera.capture_continuous(self.rawCapture, format="bgr", use_video_port=True):

使用opencv库中的cvtColor()方法 将图片数据格式变换为RGB格式,然后将图像数据设为Qimage格式图片,以便在QLabel上显示

img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = QImage(img.data, img.shape[1], img.shape[0], QImage.Format_RGB888)
self.label.setPixmap(QPixmap.fromImage(img))

 当视频文件存满硬盘时,将过期的视频文件删除掉。因这里将视频存在了树莓派/home/目录下,且我的树莓派SD卡只有32G,所以当存储空间小于10%时,只有最新的一个视频文件,其余的视频文件将全部删除。

total, used, free = shutil.disk_usage(self.path)
if (free/total) < 0.1:    # if disk space < 10%
    files = os.listdir(self.path)[1:]    #keep the latest video file, others will be deleted
                    
     # delete half of files
      files = files[:int(len(files))]
      for f in files:
      print('deleting: ' + self.path  + f)
      os.remove(self.path  + f)

使用start_recording()方法保存视频,视频格式为.h264 

self.camera.start_recording(file_)

最后制作一个shell脚本放在/etc/init.d/下,当系统启动的时候启动监控程序,这样就可以实现监控了。软件没有做回放功能,因为树莓派系统本身就有视频播放软件,观看回放的时候直接用视频软件就可以了。

最后贴个效果图,到写这个博文的时候,这个监控已经静静运行了半年了,都快忘了它的存在了。

唯一不足就是没有夜视功能,考虑过买一个带红外灯的CSI摄像头。。。。现在没下文了。。。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值