精华内容
下载资源
问答
  • 硬件:树莓派,usb摄像头 软件:motion 直接插入摄像头 安装motion:sudo apt-get install motion 运行:sudo motion 开机启动:sudo nano /etc/default/motion 将start_motion_daemon=no将no改为yes。 在...

    硬件:树莓派,usb摄像头
    软件:motion

    1. 树莓派直接插入USB摄像头

    2. 安装motion:sudo apt-get install motion

    3. 运行:sudo motion

    4. 开机启动:sudo nano /etc/default/motion
      将start_motion_daemon=no将no改为yes。

    5. 在网页输入IP地址:8081

    6. 摄像配置:sudo vim /etc/motion/motion.conf
      daemon off 改成on。
      设置分辨率:width 800 height 600
      关闭localhost的限制:stream_localhost off

    展开全文
  • 几年前买的Raspberry P 1 (CPU: 700MHz ARM, Memory: 512MB) 已积灰很久, 偶然发现尝试做使用它的拍照功能做监控,如下图: 1、系统安装与配置 首先安装raspbian-jessie-lite (官方下载),在windows下使用win...

        几年前买的Raspberry P 1 (CPU: 700MHz ARM,  Memory: 512MB) 已积灰很久, 偶然发现尝试做使用它的拍照功能做监控,如下图:

     

    1、系统安装与配置

      首先安装 raspbian-jessie-lite (官方下载),在windows下使用win32diskimager写入SD卡比较容易。

      其次插入SD卡,接通电源启动系统。对于没有显示器(也没有外接的键盘)的情况下,只能选择网络方式访问。遇到了一些问题

      (1)  虽然可以通过家庭路由器得到DHCP分配的IP(或者根据ARP,甚至使用nmap扫描)得到这个树莓派的IP,但是前提要求网络环境比较高。

      (2)  从2016.11月以后,Raspbian系统默认关闭SSH(估计是考虑安全性),也就是系统启动后SSH服务根本没启动。

     

    这种情况下只能通过修改系统里面的IP等相关参数使得启动后能得到固定的IP。对于在windows下读写Linux分区始终是个不方便的事。

    查找了多方面资料,只有Ext2Fsd能满足要求,但是按照后插入SD卡却变成了下图这样:

     

    结果Linux分区无法成为一个被Ext2Fsd识别的卷,所以这个办法就到这里终止了。也尝试过将整个系统刻入SD卡(使用EXT3),但是系统无法启动。

    最后,只能通过Linux系统来读写这个Linux分区。在这里使用back track 5来制作一个U盘系统然后重启笔记本,尝试通过笔记本修改SD卡里面的系统参数。

     

    SD卡在BT5下挂载成功:

     

    然后修改 /etc/network/interfaces文件,配置一个固定IP,如下:

     

    现在IP确定了,但是还有SSH默认情况下是关闭的,所以需要开机启动,修改/etc/rc.local文件,加入SSH的启动命令,如下图:

     

    然后umount SD卡后插入树莓派启动,状态灯显示工作正常,如下图:

    然后使用笔记本尝试ping&ssh:

    C:\>ping 192.168.0.125
    
    Pinging 192.168.0.125 with 32 bytes of data:
    Reply from 192.168.0.125: bytes=32 time=3ms TTL=64
    Reply from 192.168.0.125: bytes=32 time=4ms TTL=64
    Reply from 192.168.0.125: bytes=32 time=2ms TTL=64
    Reply from 192.168.0.125: bytes=32 time=3ms TTL=64
    
    Ping statistics for 192.168.0.125:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 2ms, Maximum = 4ms, Average = 3ms
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Thu Aug 10 20:37:32 2017 from 192.168.0.210
    
    
    pi@x:~$ 
    pi@x:~$ 

    至此,系统配置成功,下面可以通过raspi-config命令启用SSH功能了,然后把rc.local中的启动命令删除,另外更改密码。

     

    2. 监控拍摄对比

    通过raspi-config工具启用Camera功能并把摄像模块插入,然后就可以使用raspistill工具进行拍照了。

    再这里使用Java开发定时拍照任务并做图像对比,由于Camera不能通过Java直接调用,在这里就使用了jrpicam (https://github.com/Hopding/JRPiCam) 开源组件,

    通过调用raspistill进行拍照然后得到图像,整个工程的建立如下图,我将从github得到的源码一起合并到工程里面,工程就叫做smallcat吧(像一只猫一样盯着):

     

    2个类,一个Camera类是拍照获得图像的:

    public class Camera {
        
        private RPiCamera piCamera = null;
        private String defaultSaveDir = "/home/pi/diff-photo";
        
        public Camera() {
            try {
                piCamera = new RPiCamera(defaultSaveDir);
            } catch (FailedToRunRaspistillException e) {
                e.printStackTrace();
            }
        }
        
        public BufferedImage takeOnePhoto() throws Exception {
            piCamera.setAWB(AWB.AUTO)       // Change Automatic White Balance setting to automatic
                .setDRC(DRC.OFF)            // Turn off Dynamic Range Compression
                .setContrast(100)
                .setSharpness(100)
                .setQuality(100)
                .setTimeout(1)
                .setBrightness(75)
                .turnOnPreview()            // Turn on image preview
                .setEncoding(Encoding.PNG); // Change encoding of images to PNG
            
            BufferedImage buffImg = piCamera.takeBufferedStill(800, 600); // Take image and store in BufferedImage
            return buffImg;
        }
        
    }

     

    还有一个MyCat是主任务类,获取图像后对比,符合条件后保存图像:

    public class MyCat {
        
        private Camera camera = null;
        private double diffPercentThreshold = 4.0;
        
        private String diffPhotoSaveDir = "/home/pi/diff-photo/";
        
        public static void main(String[] args) {
            System.out.println("My-Cat starting...");
            MyCat cat = new MyCat();
            cat.wakeUpMyCat();
            System.out.println("My-Cat started!");
        }
        
        public void wakeUpMyCat() {
            camera = new Camera();
            Thread inspector = new Thread(new CatInspector());
            inspector.setName("Cat-Inspector");
            inspector.start();
        }
        
        class CatInspector implements Runnable {
            private BufferedImage previousPhoto = null;
            
            @Override
            public void run() {
                while (true) {
                    try {
                        TimeUnit.SECONDS.sleep(3);
                    } catch (InterruptedException e1) {
                        System.out.println("Cat Inspector Interrupted");
                        return;
                    }
                    
                    try {
                        BufferedImage currentPhoto = camera.takeOnePhoto();
                        if (previousPhoto != null) {
                            if (isDifferent(currentPhoto)) {
                                foundDiffPhoto(currentPhoto);
                            }
                        } else {
                            // Save the first photo
                            foundDiffPhoto(currentPhoto);
                        }
                        
                        previousPhoto = currentPhoto; // Set current photo as previous
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            
            /**
             * Process different photo
             */
            private void foundDiffPhoto(BufferedImage photo) {
                String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
                File saveFile = new File(diffPhotoSaveDir + fileName + ".png");
                try {
                    ImageIO.write(photo, "png", saveFile);
                    System.out.println("New image saved to: " + saveFile.getAbsolutePath());
                } catch (IOException e) {
                    System.out.println("Save image error: ");
                    e.printStackTrace();
                }
            }
            
            /**
             * Compare current photo with previous photo
             */
            private boolean isDifferent(BufferedImage currentPhoto) {
                int currentWidth = currentPhoto.getWidth();
                int currentHeight = currentPhoto.getHeight();
                
                int previousWidth = previousPhoto.getWidth();
                int previousHeight = previousPhoto.getHeight();
                
                if ((currentWidth != previousWidth) || (currentHeight != previousHeight)) {
                    System.err.println("Error: Images dimensions mismatch");
                    System.exit(1);
                }
                long diff = 0;
                // Find RGB difference
                for (int y = 0; y < currentHeight; y++) {
                    for (int x = 0; x < currentWidth; x++) {
                        int rgb1 = currentPhoto.getRGB(x, y);
                        int rgb2 = previousPhoto.getRGB(x, y);
                        
                        int r1 = (rgb1 >> 16) & 0xff;
                        int g1 = (rgb1 >> 8) & 0xff;
                        int b1 = (rgb1) & 0xff;
                        
                        int r2 = (rgb2 >> 16) & 0xff;
                        int g2 = (rgb2 >> 8) & 0xff;
                        int b2 = (rgb2) & 0xff;
                        
                        diff += Math.abs(r1 - r2);
                        diff += Math.abs(g1 - g2);
                        diff += Math.abs(b1 - b2);
                    }
                }
                double n = currentWidth * currentHeight * 3;
                double p = diff / n / 255.0;
                
                double diffPercent = (p * 100.0);
                System.out.println("Diff percent: " + diffPercent);
                return diffPercent > diffPercentThreshold;
            }
        }
        
    }

     

    图像的相似性匹配是一个复杂的论题,这里使用最简单的RGB值比对(复杂的算法这个小树莓很难承受),每次比对后睡眠3秒钟后面再执行任务。

    打包jar放到树莓派上面执行吧,但首先需要安装下JDK:

    # sudo apt-get update
    # sudo apt-get install oracle-java7-jdk

     

    3. 结果如何 ?

    (1)  得到记录的两张图片如下(相似比例调试到一个比较合适的值)。

     

     

    (2)  这个摄像头确实比较差,尝试调整参数效果也不理想,没有自动对焦等功能对于监控来说实际上用起来困难。

    (3)  简单的RGB循环对比,CPU一下子撑到80-90%,这个单核的700MHz CPU做这类工作确定有点困难,高负载的时候SSH经常卡顿。

    (4)  总之,实用性不强。

     

    转载于:https://www.cnblogs.com/mikevictor07/p/7343099.html

    展开全文
  • 制作树莓派监控

    千次阅读 2018-02-24 12:42:46
    准备树莓派 购买树莓派3 淘宝地址或其他渠道, 根据需要选购电源,充电线,网线,外壳,散热片,TF卡,读卡器等 初始化树莓派: 下载: https://www.raspberrypi.org/downloads/raspbian/ 格式化存储卡: SDFormatter.exe ...
    1. 准备树莓派

      1. 购买树莓派3 淘宝地址或其他渠道, 根据需要选购电源,充电线,网线,外壳,散热片,TF卡,读卡器等
      2. 初始化树莓派:
        下载: https://www.raspberrypi.org/downloads/raspbian/
        格式化存储卡: SDFormatter.exe
        烧录: Win32DiskImager.exe
        烧录好以后需要在根目录下建立名为ssh的空白文件
        存储卡插入树莓派,接网线,接电源
        通过路由器查看树莓派ip
        系统默认登录用户名为pi
        该账户默认密码是raspberry
        通过putty软件登录树莓派
        设置root登录
        sudo passwd root
        sudo vi /etc/ssh/sshd_config
        修改为PermitRootLogin yes
        sudo reboot
    2. 准备摄像头

      1. 购买摄像头淘宝地址
      2. 安装摄像头
        安装摄像头
        图片来自https://linux.cn/article-3650-1.html
    3. 安装和配置motion
    #安装
    apt-get update
    apt-get install motion
    #/etc/modules 中
    #添加摄像头
    bcm2835-v4l2
    #/etc/default/motion 中
    #开机自动运行
    start_motion_daemon=yes
    #/etc/motion/motion.conf 中
    #后台运行
    deamon on
    width 640      #图像的宽
    height 480     #图像的高
    #允许通过网页查看摄像头
    stream_localhost off 
    #设备路径 按道理应该是 /dev/video0 
    videodevice /dev/video0 
    #图片存储位置
    target_dir /tmp/motion
    stream_auth_method 2                #开启密码认证
    stream_authentication 用户名:密码     #网页查看摄像头的用户名和密码
    #/etc/rc.local 中
    #开机自动运行
    exit 0前添加 motion
    #运行
    motion
    #终止
    service motion stop
    #本地访问
    localhost:8081 
    

    4. 配置外网访问
    注册花生壳 https://www.oray.com/
    下载树莓派版本的花生壳 https://hsk.oray.com/download/
    树莓派花生壳官方文档 http://service.oray.com/question/2680.html
    登录树莓派
    在路由器中设置=>转发规则=>虚拟服务器=>增加树莓派的8081端口
    外网访问:花生壳壳域名:8081
    通过之前设置的账号密码登录
    5. 2018年2月24更新,如有疑问或改进建议,请联系我

    展开全文
  • 利用树莓派制作人体感应监控

    万次阅读 2017-05-18 15:34:30
    树莓派3B 1台 CPI接口摄像头 1个 HC-SR501红外人体感应模块 1个 公对母杜邦线 3根 第一步: 将摄像头安装到树莓派上。在树莓派上设置摄像头为可用: 输入命令: sudo raspi-config 第二步: 将红外人体感应...

    转载请注明出处,谢谢。


    设备:

    树莓派3B 1台

    CPI接口摄像头 1个

    HC-SR501红外人体感应模块 1个

    公对母杜邦线 3根


    第一步:

    将摄像头安装到树莓派上。在树莓派上设置摄像头为可用:

    输入命令:

    sudo raspi-config

    然后选择摄像头设置成enable,然后重启树莓派。


    第二步:

    将红外人体感应模块插上杜邦线,一共三根GPIO针脚,中间的为信号线,左右两侧分别为5V电源输入和GRAND。

    注意5V电源输入和GRAND插在树莓派GPIO针脚上时千万不要插错!否则原件可能会被烧毁。我自己之前就插反了,烧了一个温度传感器大哭


    图中左侧的针脚是正极,右侧针脚是负极,中间针脚是信号针

    中间的信号线插在板子上任意一个信号针脚即可


    距离和灵敏度阀门可根据自己实际情况调节,根本不需要螺丝刀,手指甲就能转动。图中距离和灵敏度都是最大的状态


    另外这个元件还有两个模式L、H模式:

    L模式是不可重复触发,当探测到一次人体时,输出一次高电平,保持一段时间恢复低电平,在此期间如果还是检测到了人体也不再延长这个高电平的时间。等到低电平的封锁时间(前面默认是2.5S)过了以后才又开始检测。

    H模式是可以重复触发,如果一直感应到人体时,会一直输出高电平,直到探测不到人体后保持小段时间然后恢复低电平。


    图中这个是H模式。


    第三步:

    终于开始写码啦,这里所使用的语言是Python3

    import RPi.GPIO as GPIO
    import time
    import picamera
    
    #初始化
    def init():
        #设置不显示警告
        GPIO.setwarnings(False)
        #设置读取面板针脚模式
        GPIO.setmode(GPIO.BOARD)
        #设置读取针脚标号
        GPIO.setup(12,GPIO.IN)
        pass
     
    def detct():
        while True:
        	curtime = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
            #当高电平信号输入时报警
            if GPIO.input(12) == True:
            	alart(curtime)
            else:
                continue
            time.sleep(3)
    
    def alart(curtime):
        print curtime + " Someone is coming!"
        #根据时间获取图像
        camera.capture(curtime + '.jpg')
    
    #声明摄像头
    camera = picamera.PiCamera()
    
    time.sleep(2)
    
    init()
    detct()
    GPIO.cleanup()



    第四步:执行代码

    python3 xxx.py


    这样就基本完成了,剩下的最后一步就是如何摆姿势了偷笑


    展开全文
  • 极客DIY:用树莓派制作低成本高清监控摄像机 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-04/116603.htm
  • 树莓派
  • 这次介绍一个使用树莓派制作的可以语音交互的家庭智能监控,其基于上一篇博客 如何用树莓派做一个家庭语音助手/智能音箱 的基础之上进行开发 开始 这个家庭智能监控的功能是 ???? 当用户离开家门时通过语音将其开启...
  • Python+树莓派制作IoT门控设备(物联网锁) 前些天写了篇文章是利用树莓派制作一个开关门监控设备的雏形 Python+树莓派 是谁在开门但是这个设备运行的前提是需要树莓派正常供电并已经连接了网络但是如果需要在没有电...
  •   这个是我第一次接触树莓派4b,学习b站视频总结一下,方便以后再看。网址如下:https://www.bilibili.com/video/av61447175?p=9   这个摄像头我用的是usb摄像头,只需要将摄像头插入到树莓派上即可。 步骤: ...
  • 基于树莓派制作智能小车(H5页面操作移动+实时显示摄像头内容+各类传感器) 软件环境 烧录系统:RASPBIAN STRETCH LITE 2018-04-18 (需要进行一系列配置,如开启SSH、摄像头、中文设置、更改源等) 监控相关:Nginx...
  • 1、启动树莓派 putty. 2、安装 sudo apt-get install motion 复制,右键,回车。 3、运行 sudo motion 复制,右键,回车。 4、访问 在远程控制界面访问。左上角-树莓派标志-internet-chromium。
  • 树莓派笔记2:树莓监控

    千次阅读 2017-12-29 15:01:07
    树莓派加上一个便宜的网络摄像头,制作一个简单的监控器,还是挺有意思的事呢。貌似监控系统是大部分关于树莓派的书都会介绍的东西,网络上关于这个的资料也很多,不过作为新手在自己搭建的时候还是会遇到很多奇奇...
  • 资源: 下载到树莓派 ... 总体步骤: 1.安装辅助工具 2.解压master,zip 3.编辑源文件 ...5.制作mjpg的启动脚本 6.执行mjpg的启动脚本(启动mjpg) 1.安装辅助工具 在树莓派上执行: sudo apt-ge...
  • 制作树莓派最小镜像-img裁剪瘦身

    千次阅读 2019-01-07 23:29:49
    最近刚做了一套opencv摄像头监控的程序,想将这套程序做一个镜像备份起来,但发现用Win32DiskImager或dd命令来制作镜像,都是将sd卡整盘进行备份,造成了巨大的硬盘浪费,同时,会局限sd卡本身,也就是说32g卡制作的...
  • 树莓派上再制作一个脚本,每5分钟生成图形,放在http服务器目录下,以便通过浏览器查看。 项目用到的材料清单如下 必备材料: 1、树莓派一块 2、欧西亚(Oregon Scientific)RTGR328N室外传感器一台。(欧西亚家用...
  • 制作动作监控器。docx 关闭脚本,docx 安装python.docx 安装动作捕捉脚本picam.py.docx LAMP网络服务器。docx 树莓派修改时间,截图,安装虚拟键盘。docx 安装samba并做如下修改SAMBA实现共享文件服务。docx 组织的...
  • 分享一个能自动网络上传的监控相机,基于树莓派设计,功能也不低,哈哈! 这个监控相机由一个简单的 Python程序控制的: 实现功能: 启动相机,捕捉静止图像 检查连接到互联网 自动上传图片到WebAPI 如果连接失败,...
  • 树莓派常用设备使用

    2020-05-05 05:39:03
    开发 Zero 一体相机的初衷是基于兴趣,还有就是树莓派 Zero相较于其它版本够便宜,且体积小巧,可以满足制作常规应用,比如:简易拍照相机,延时拍照相机,视频监控,遥控小车,等。唯一遗憾的就是上高级点的应用...
  • 二自由度云台一、双舵机实现云台运动(1)舵机的运动原理(2)代码实现二、摄像头模块(1)利用MJPG-streamer实现网络监控(2)motion工具实现网络视频监控 一、双舵机实现云台运动 (1)舵机的运动原理 通常情况下...
  • 上一篇主要介绍一下物联网的大环境和什么是Lettuce IOT框架而这一篇将要讲解华为的IOT平台。 华为OceanConnect平台操作一,profile文件与编解码插件...但是这些技术都离不开一个组件,那就是监控管理中心,比如Spr...
  • 在本书中,我们将向您展示如何制作基于Raspberry Pi的相机系统,以便您可以捕获延时图像并通过WiFi查看,如果检测到运动则触发相机,甚至可以执行基本面部认可作为机器学习方法的介绍。 拿一个Raspberry Pi并添加一...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

树莓派制作监控