OpenMV(三)--实时获取摄像头图片

•OpenMV 同时被 2 个专栏收录
6 篇文章 5 订阅
13 篇文章 0 订阅

OpenMV(一)–基础介绍与硬件架构
OpenMV(二)–IDE安装与固件下载

前言

利用OpenMV进行机器视觉开发的基础就是结合摄像头拍摄的图像进行分析,获取摄像头拍摄的图片是万里长征的第一步。本系列专栏中采用的都是是OV7725卷帘快门摄像头。我们将从OpenMV中相应的构造函数开始,对实现该功能的源码进行分析。

1. 构造函数

OpenMV将所有的与摄像头有关的功能全部封装在了sensor模块中,可以很方便的调用。

  • sensor函数

    • sensor.reset()
      初始化摄像头
    • sensor.set_pixformat(pixformat)
      设置像素格式。pixformat有三个参数:
      • sensor.GRAYSCAL: 灰度图像,每个像素8位(1字节),处理速度快
      • sensor.RGB565: 每个像素为16位,5位红色,6位绿色,5位蓝色,处理速度比灰度图像漫
      • sensor.BAYER: 占空间小,仅捕捉图像用,不能做图像处理
    • sensor.set_framesize(framesize)
      设置每帧大小,也就是图像尺寸。常用的framesize参数有一下几个:
      • sensor.QQVGA: 160*120
      • sensor.QVGA: 320*240
      • sensor.VGA: 640*480
      • sensor.LCD: 128*160 (用于官方LCD模块)
      • sensor.QQVGA2: 128*120 (用于官方LCD模块)
    • sensor.skip_frames([n, time])
      摄像头初始化以后忽略的帧数或者等待的时间,等待摄像头稳定。
      • n: 忽略的帧数
      • time: 等待的时间
    • sensor.snapshot()
      使用摄像头拍一张照片,并返回imag图像
  • clock函数
    clock函数可以用来计算摄像头的每秒帧数

    • clock = time.clock()
      创建一个时钟
    • clock.tick()
      开始追踪运行时间
    • clock.fps()
      停止追踪运行时间,并返回当前的FPS(每秒传输帧数)

2. 源码分析

下面我们以官方的实时获取摄像头图片源码为例,对其进行分析, 实时获取图像的步骤为:
初始化摄像头 --> 设置采集照片的格式 --> 设置采集照片的大小 --> 等待摄像头设置完成 --> 拍摄图像

"""
实时获取摄像头图片例程
"""
# 导入相应的库
import sensor, image, time

# 初始化摄像头
sensor.reset()

# 设置采集到照片的格式:彩色RGB
sensor.set_pixformat(sensor.RGB565)

# 设置采集到照片的大小: 320 * 240
sensor.set_framesize(sensor.QVGA)

# 等待一段时间2s,等摄像头设置好
sensor.skip_frames(time = 2000)

# 创建一个时钟来计算摄像头每秒采集的帧数FPS
clock = time.clock()

# 实时显示摄像头拍摄的照片
while(True):
	# 更新FPS时钟
	clock.tick()
	# 拍摄图片并返回img
	img = sensor.snapshot()
	# 串口打印FPS参数
	print(clock.fps())

我们将板子连接到OpenMV IDE, 新建文件,并将上述代码copy进去,点击左下角的绿色按钮,我们就可以看到IDE右边的窗口在实时显示摄像头的图片:
在这里插入图片描述

然后我们点击IDE左下角的“串行终端”,可以发现它正在打印摄像头的FPS:
**加粗样式**

3. 脱机运行程序

有一点需要注意的是,我们的板子连接到IDE的时候,运行速度会减少,当脱机运行的时候,我们可以发小FPS会提升到2倍左右的速度。关于怎么在脱机的情况下运行我们写好的程序呢?当我们的板子通过USB插入电脑的时候,会跳出一个U盘界面,上面有三个文件:
在这里插入图片描述
其中main.py是主函数代码文件,上电之后首先运行。我们可以将代码直接copy到main.py中,即可实现程序的脱机运行。当然,如果要看到实时显示图像的效果,我们需要给我们的板子加一个LCD,并更改程序如下(以官方LCD为例):

"""
实时获取摄像头图片例程
"""
# 导入相应的库
import sensor, image, lcd

# 初始化摄像头
sensor.reset()

# 设置采集到照片的格式:彩色RGB
sensor.set_pixformat(sensor.RGB565)

# 设置采集到照片的大小: 320 * 240
sensor.set_framesize(sensor.QVGA)

# 等待一段时间2s,等摄像头设置好
sensor.skip_frames(time = 2000)

#LCD初始化
lcd.init()

# 实时显示摄像头拍摄的照片
while(True):
	 # 拍照和显示图像.
	lcd.display(sensor.snapshot())
  • 7
    点赞
  • 0
    评论
  • 52
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏

爱吃骨头的猫、

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值