• Raspberry Pi 摄像头模块入门



    参考资料
    Raspberry Pi提供了摄像头模块的接口,用户图像和视频拍摄。以下内容根据官网,总结了一些基本的使用方法。

    一、摄像头模块安装

    • 将摄像头排线露出金属的部分背对网孔和usb接口,即另一面的蓝色塑料封皮正对网孔和usb接口
    • 小心地将接线板上的黑色塑料往上拉(请务必保证电源关闭,手指干燥
    • 将排线插入,黑色塑料往下压紧排线
    • 开机,使用sudo raspi-config,选择interfacing opinions,选择Camera,并Enable
    • Finish退出配置
    • 重启

    二、使用命令控制摄像头

    如果一切顺利的话,就可以使用命令控制摄像头了

    • 拍照---raspistill
      拍摄一张照片,保存在桌面,命名为image.jpg,等待几秒后,桌面就会出现jpg文件
    pi@raspberrypi:~ $ raspistill -o Desktop/image.jpg
    


    增加参数,还可以更改图片大小

    pi@raspberrypi:~ $ raspistill -o Desktop/image-small.jpg -w 640 -h 480
    

    输入raspistill直接回车可查询raspistill命令其他参数

    • 摄像---raspivid
      最直接的参数 -t设置拍摄时间 -w -h设置分辨率宽和高
      拍摄一段5000毫秒、分辨率为1024x768的视频,保存在桌面,命名为video.h264
    pi@raspberrypi:~ $ raspivid -o Desktop/video.h264 -t 5000 -w 1024 -h 768
    

    三、使用Python程序控制摄像头

    使用Python程序控制摄像头需要使用PiCamera库
    打开Raspberry Pi自带的Thonny Python IDE,新建camera.py文件,文件命名不能用PiCamera.py

    • 预览摄像头画面(仅在接入显示屏幕有效)
    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    # Rotate by 180 degrees when the camera is upside-down
    camera.rotation = 180 
    
    camera.start_preview(alpha=200)  # Make the camera preview see-through by setting an alpha level from 0 to 255
    sleep(5)
    camera.stop_preview()
    

    上述代码实现打开摄像头预览5秒钟再关闭的功能。但是如果这个程序仅在Raspberry Pi接入了显示器才有效,SSH或是VNC访问是无效的。

    • 照相和录像
      修改上述代码
    from picamera import PiCamera
    from time import sleep
    
    camera = PiCamera()
    # Rotate by 180 degrees when the camera is upside-down
    camera.rotation = 180 
    
    camera.start_preview(alpha=200)  # Make the camera preview see-through by setting an alpha level from 0 to 255
    
    sleep(5)
    # Take a picture and save as /home/pi/Desktop/image.jpg' 
    camera.capture('/home/pi/Desktop/image.jpg')
    
    # Take 5 pictures every 5 seconds and save as /home/pi/Desktop/image0.jpg' ... image4.jpg
    for i in range(5):
        sleep(5)
        camera.capture('/home/pi/Desktop/image%s.jpg' % i)
    
    camera.stop_preview()
    

    在拍照前,最好让摄像头sleep至少2秒,使之能够感光
    将capture()改成start_recording()和stop_recording()就可控制摄像头拍摄录像了

    • 更多设置
      PiCamera库提供了很多关于图像和摄像头预览的设置,并且两者是分开的,即一部分只对拍摄的画面有效,另一部分只对预览有效
      • 分辨率 resolution
        图片最大是2592×1944 视频最大是1920×1080,最小是64x64
      • 帧数 framerate
      • 图像中增加文本 annotate_text
      • 图像文本大小 annotate_text_size,范围:6到160,默认32
      • 图像文本颜色 import Color,annotate_background 和 annotate_foreground
      • 摄像头预览亮度修改 brightness,范围:0到100,默认50
      • 摄像头预览对比度 contrast
      • 其他参考
    from picamera import PiCamera, Color
    from time import sleep
    
    camera = PiCamera()
    camera.rotation = 180 
    camera.resolution = (1024, 768)
    camera.framerate = 15
    
    camera.start_preview()
    camera.brightness = 70
    camera.annotate_background = Color('blue')
    camera.annotate_foreground = Color('yellow')
    camera.annotate_text = "Hello world!"
    camera.annotate_text_size = 30
    sleep(5)
    camera.capture('/home/pi/Camera/pic.jpg')
    camera.stop_preview()
    
    camera.start_preview()
    for i in range(5):
        camera.annotate_text = "Brightness: %s" % i
        camera.brightness = i*20
        sleep(0.1)
        camera.capture('/home/pi/Camera/brightness%s.jpg' % i)
    camera.stop_preview()
    
    camera.start_preview()
    for i in range(5):
        camera.annotate_text = "Contrast: %s" % i
        camera.contrast = i*20
        sleep(0.1)
        camera.capture('/home/pi/Camera/contrast%s.jpg' % i)
    camera.stop_preview()
    
    

    四、基于vlc的Raspberry Pi摄像头实时监控

    参考基于树莓派的专用摄像头实时监控

    $ sudo apt-get install vlc  #Raspberry Pi系统自带了
    $ #-o - 输出到stdout,-t 0不暂停立即获取流, 640x360,25帧/s,-rot 180画面旋转180度(用了支架摄像头画面倒过来了)
    $ sudo raspivid -o - -rot 180 -t 0 -w 480 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
    

    在与Raspberry Pi在同一局域网内的其他设备上,用vlc打开网络串流 http://Raspberry Pi的ip:8090
    就播放看到摄像头的画面了,但是vlc的实施监控存在5s左右的延时,体验并不是很好。

  • 相关阅读:
    Linux知识(7)----远程登录 和远程拷贝
    ROS知识(9)----安装Turtlebot2和远程控制Turtlebot2
    几张图理解Roll, Pitch, Yaw的含义
    GIT(1)----更新代码和上传代码操作的步骤
    ROS知识(8)----CMakeLists.txt文件编写的理解
    ROS知识(7)----ROS命令中的单引号`和‘的混淆问题
    ROS知识(6)----卸载ROS系统
    python知识(2)----python的多态
    DWR3.0框架入门(3) —— ScriptSession的维护及优化
    log4j.properties配置详解
  • 原文地址:https://www.cnblogs.com/fjlinww/p/11935470.html
Copyright © 2020-2023  润新知