实时获取摄像头图片

  • 前言
  • 1. 构造函数
  • 2. 源码分析
  • 3. 脱机运行程序

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()# 拍摄图片并返回imgimg = 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())

OpenMV(三)--实时获取摄像头图片相关推荐

  1. opencv-python 实时获取摄像头数据并实时显示。

    opencv-python 实时获取摄像头数据并实时显示. 目录 opencv-python 实时获取摄像头数据并实时显示. 代码: 一.关于 cv2.VideoCapture(source) 函数 ...

  2. D435 pyrealsense 如何实时获取摄像头的曝光值?get_frame_metadata(rs.frame_metadata_value.actual_exposure)成功了(更新UWP)

    文章目录 200123 根据 Intel Realsense D435 测试摄像头在不同曝光值下的帧生成时间(防止曝光时间过长导致fps下降)auto_exposure_priority(没成功),使 ...

  3. PHP JS浏览器实时获取摄像头内容(附代码)

    注意 浏览器获取摄像头权限时候比较严格,我百度时必须有ssl证书才可以(应该还有别的方法),我自己使用的https协议调用的 前端JS <!DOCTYPE html> <html&g ...

  4. PC端获取摄像头图片并上传的实现

    说明:(1)在页面上显示摄像头录像. (2)将摄像头的某个帧截屏到img里(实际是base64的图像编码) (3)调用jquery上传图片(非文件上传的模式) (4)使用Spring MVC 解析并保 ...

  5. unity 获取摄像头图片被旋转处理

    使用的是 unity 2018.2.18f1   设备小米6 问题:摄像头捕获出来的图像显示到图片上被旋转了90度 解决方案:旋转承载图片(RawImage_Camera) rotation( z = ...

  6. h5移动端实时获取摄像头拍照-可以通过上传图片进行人脸识别

    IOS系统要11以上,且必须是https ```js 拍照 播放 ```

  7. Web网页调用本地摄像头、实时获取图片

    PC端Web网页跳用本地摄像头,实时获取图片.(注意事项:如果是本地localhost可直接调用,挂到服务器必须使用https访问) 仅测试了google浏览器,运行代码,会跳出摄像头授权,请按&qu ...

  8. python照片过人脸_python openCV实现摄像头获取人脸图片

    本文实例为大家分享了python openCV实现摄像头获取人脸图片的具体代码,供大家参考,具体内容如下 在机器学习中,训练模型需要大量图片,通过openCV中的库可以快捷的调用摄像头,截取图片,可以 ...

  9. opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片

    转载请注明文章来源:https://blog.csdn.net/caf1234/article/details/97671140 一.实现笔记本和海康网络摄像头(型号:DS-2CD3T86FWDV2- ...

最新文章

  1. 喀什市2021年高考成绩查询,2021年新疆高考查分网站查分网址:http://www.xjzk.gov.cn/...
  2. 领歌LeangooV6.5.3:支持评论编辑,看板动态跳转
  3. Forrester:2011年Q2数据库审计与实时保护市场分析报告【更新】
  4. java怎么解决重复支付问题_支付系统设计中,如何防止重复支付?
  5. jvm内存模型及分配
  6. wkwebview 下移20像素_UITableView嵌套WKWebView的那些坑
  7. mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库
  8. 联想拯救者y7000加内存条_短测联想拯救者Y7000,到底值不值得买?
  9. java实现语音发送,Java实现发送手机短信语音验证功能代码实例
  10. Chrome调试模式获取App混合应用H5界面元素
  11. 10 SystemVerilog语言编写SPI发送
  12. Leetcode744.Find Smallest Letter Greater Than Target寻找比目标字母大的最小字母
  13. CSDN在线下载免费获取积分
  14. Ubuntu上的论文翻译软件 --- 兰译
  15. java中display1_关于displaytag1.1的两种分页
  16. 现代科技概论_现代科技概论课程:科学技术史2
  17. 搜索引擎的技术发展趋势
  18. 2010Excel分列操作的一些问题进行分享
  19. 实习日记——Day36
  20. Microsoft Windows CredSSP 远程执行代码漏洞CVE-2018-0886

热门文章

  1. JDK时区与电脑系统时区不一致,导致时间new date不对
  2. Python学习入门8:新人怎么学习Python
  3. Windows Server 2008 R2无法远程桌面解决方法
  4. linux python json,在Python中使用JSON
  5. 用Python操作MySQL(pymysql)
  6. 用easymock来mock数据
  7. 【codeforces 798B】Mike and strings
  8. (转)Apache 中 KeepAlive 配置的合理使用
  9. springboot项目整合mybatis
  10. java基础——“”equals“”与 “”==“” 的区别