当前位置: 首页 > news >正文

OpenMV学习笔记1——IDE安装与起步

目录

一、OpenMV IDE下载

二、OpenMV界面

三、Hello World!

四、将代码烧录到OpenMV实现脱机运行

五、插SD卡(为什么买的时候没送?)


 

一、OpenMV IDE下载

浏览器搜索OpenMV官网,进入后点击“立即下载”,即可下载OpenMV的IDE。因为我这里是使用Windows开发,所以下载与Windows匹配的版本。

 下载好后一路点击安装,什么都不需要管。在最后会提示是否安装XXX,一路点“是”就可以。安装好后会自动运行OpenMV的IDE。

二、OpenMV界面

 左边最大的是代码编写框,需要在这里写代码。

右上角写着“没有图像”的是OpenMV的Frame Buffer窗口,可以通过它来获知当前摄像头捕获到了什么,不过现在我们没有链接摄像头,所以什么都不显示。

它的下方是直方图,可以显示不同颜色的阈值,点击该窗口右上方的下拉三角即可切换不同的数据,包括RGB、灰度、LAB、YUV四种。

用USB数据线将OpenMV与电脑进行链接,点击IDE中左下角的链接和运行按钮,即可看到右边两个窗口有了显示数据。 

三、Hello World!

# Hello World Example
#
# Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!import sensor
import timesensor.reset()  # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565)  # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)  # Set frame size to QVGA (320x240)
sensor.skip_frames(time=2000)  # Wait for settings take effect.
clock = time.clock()  # Create a clock object to track the FPS.while True:clock.tick()  # Update the FPS clock.img = sensor.snapshot()  # Take a picture and return the image.print(clock.fps())  # Note: OpenMV Cam runs about half as fast when connected# to the IDE. The FPS should increase once disconnected.

在代码中,将鼠标移至任意函数或库处停留一段时间,即可查看光标停留位置指向函数或库的部分信息。 

新打开的IDE代码区自带了一段代码,第五及第六行是import语句,用于导入本程序需要使用的库。这个程序中导入了“sensor”及“time”两个库。

sensor.reset()用作初始化,初始化OpenMV的感光元件。

sensor.set_pixformat()设置像素模式,需要一个参数,可选项如下:

  • sensor.GRAYSCALE: 灰度,每个像素8bit。
  • sensor.RGB565: 彩色,每个像素16bit。

sensor.set_framesize()设置图像的大小,需要一个参数,可选项如下(转载自官方中文文档):

  • sensor.QQCIF: 88x72
  • sensor.QCIF: 176x144
  • sensor.CIF: 352x288
  • sensor.QQSIF: 88x60
  • sensor.QSIF: 176x120
  • sensor.SIF: 352x240
  • sensor.QQQQVGA: 40x30
  • sensor.QQQVGA: 80x60
  • sensor.QQVGA: 160x120
  • sensor.QVGA: 320x240
  • sensor.VGA: 640x480
  • sensor.HQQQVGA: 80x40
  • sensor.HQQVGA: 160x80
  • sensor.HQVGA: 240x160
  • sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())
  • sensor.B64X64: 64x64 用于帧差异 image.find_displacement())
  • sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())
  • sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())
  • sensor.LCD: 128x160 (用于LCD扩展板)
  • sensor.QQVGA2: 128x160 (用于LCD扩展板)
  • sensor.WVGA: 720x480 (用于 MT9V034)
  • sensor.WVGA2:752x480 (用于 MT9V034)
  • sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)
  • sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)
  • sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)
  • sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)
  • sensor.HD: 1280x720 (仅用于 OV5640 感光元件)
  • sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)
  • sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)
  • sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)
  • sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)
  • sensor.WQXGA2: 2592x1944 (仅用于 OV5640 感光元件)

 这里样例代码设置了“sensor.QVGA”,即设置图像大小为320×240。

sensor.skip_frames(n=10)跳过一些帧,跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。样例代码设置为2000。

clock = time.clock()开启一个时钟。

之后,我们进入一个while的大循环里。在这个循环里,我们使用sensor.snapshot()拍摄一张照片,返回一个image对象,并使其显示在右侧栏当中。

最后一句是打印帧率,我们可以在代码区下方打开串行终端查看不断显示的帧率。

注意:这里显示的只是传输图像的帧率,如果我们在帧缓冲区右上角点击禁用,即不再想电脑传输图片,此时再次连接OpenMV,可以看到帧率有一波猛涨。

OpenMV的镜头是可以调整对焦的,只需要将镜头下方的锁焦环拧松,然后调整摄像头位置即可,一般最清晰的位置在底部偏上一些。调整好之后把镜头与锁焦环拧紧即可。

四、将代码烧录到OpenMV实现脱机运行

有时候我们想让OpenMV在不连接电脑的情况下也可以自己运行写好的代码,此时需要打开上方工具栏的“将打开的脚本保存到OpenMV CAM(作为main.py)选项。选择之后可以看到OpenMV亮了红灯,一会后熄灭,证明程序下载完成。

因为我这里之前点过一次,所以现在已经全变灰了

打开我的电脑可以看到,有一个新的U盘,这个就是OpenMV的Flash空间,打开后可以看到main.py,此时就是我们下载进去的程序。下载好之后,即使我们不连接电脑而是给它独立供电,也可以运行写好的程序。

五、插SD卡(“为什么买的时候没送?”)

如果觉得OpenMV自带的Flash空间太小,我们可以在背部找到一个卡槽用来装储存卡,最大支持32GB。插好卡之后再打开”我的电脑“,可以看到OpenMV的Flash被SD卡代替,存储空间已经变大了。

相关文章:

OpenMV学习笔记1——IDE安装与起步

目录 一、OpenMV IDE下载 二、OpenMV界面 三、Hello World! 四、将代码烧录到OpenMV实现脱机运行 五、插SD卡(为什么买的时候没送?) 一、OpenMV IDE下载 浏览器搜索OpenMV官网,进入后点击“立即下载”&#xff0…...

C++设计模式|结构型 适配器模式

1.什么是适配器模式? 可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝,主要⽬的是 充当两个不同接⼝之间的桥梁,使得原本接⼝不兼容的类能够⼀起⼯作。 2. 适配器模式的组成 (1)接口类,给客户端调用&…...

视频码流分析工具

一、VQ Analyzer 在线使用说明: https://vicuesoft.com/vq-analyzer/userguide/ ref: Video Analyzer and Streaming Tester Software – VQ Analyzer HEVC 分析工具 - 懒人李冰 推荐一个开源且跨平台的免费码流分析软件YUView - 知乎...

记一次重定向问题(浏览器安全)解决

近期做单点登陆功能,本身应该是一个很简单的功能,却发生了意向不到的问题…让我们看下: 首先第三方给出的地址需要通过JWT框架获取token拼接后跳转,我这边为了方便首选肯定是考虑用response.sendRedirect(url),但是做好…...

【传知代码】transformer-论文复现

文章目录 概述原理介绍模型架构 核心逻辑嵌入表示层注意力层前馈层残差连接和层归一化编码器和解码器结构 数据处理和模型训练环境配置小结 本文涉及的源码可从transforme该文章下方附件获取 概述 Transformer模型是由谷歌在2017年提出并首先应用于机器翻译的神经网络模型结构…...

大模型日报|今日必读的 13 篇大模型论文

大家好,今日必读的大模型论文来啦! 1.MIT新研究:并非所有语言模型特征都是线性的 最近的研究提出了线性表征假说:语言模型通过操作激活空间中概念(“特征”)的一维表征来执行计算。与此相反,来…...

Python 魂斗罗的音效和动漫效果

一、实现游戏音效 音效是游戏中不可或缺的一部分,它可以为游戏增添氛围和趣味性。在 Pygame 中,我们可以使用 pygame.mixer 模块来播放音效。下面是一个简单的示例代码,演示如何在游戏中播放音效: import pygamepygame.mixer.init…...

Raylib 绘制自定义字体的一种套路

Raylib 绘制自定义字体是真的难搞。我的需求是程序可以加载多种自定义字体,英文中文的都有。 我调试了很久成功了! 很有用的参考,建议先看一遍: 瞿华:raylib绘制中文内容 个人笔记|Raylib 的字体使用 - …...

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结: 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点:派生类中6个默认成员函数…...

DOS学习-目录与文件应用操作经典案例-more

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统的more命令是一个用于查看文本文件内容的工具。…...

android 在 Activity 的 onCreate 中获取View 的宽高

view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQ…...

Pod进阶——资源限制以及探针检查

目录 一、资源限制 1、资源限制定义: 2、资源限制request和limit资源约束 3、Pod和容器的资源请求和限制 4、官方文档示例 5、CPU资源单位 6、内存资源单位 7、资源限制实例 ①编写yaml资源配置清单 ②释放内存(node节点,以node01为…...

XSS---DOM破坏

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.什么是DOM破坏 在HTML中,如果使用一些特定的属性名(如id或name)给DOM元素命名,这些属性会在全局作用域中创建同名的全局变量,指向对…...

2024电工杯数学建模B 题:大学生平衡膳食食谱的优化设计

背景: 大学时代是学知识长身体的重要阶段, 同时也是良好饮食习惯形成的重要时期。这一特 定年龄段的年轻人, 不仅身体发育需要有充足的能量和各种营养素, 而且繁重的脑力劳动和 较大量的体育锻炼也需要消耗大量的能源物质。 大学生…...

LeetCode 1542.找出最长的超赞子字符串:前缀异或和(位运算)

【LetMeFly】1542.找出最长的超赞子字符串:前缀异或和(位运算) 力扣题目链接:https://leetcode.cn/problems/find-longest-awesome-substring/ 给你一个字符串 s 。请返回 s 中最长的 超赞子字符串 的长度。 「超赞子字符串」需…...

LLM企业应用落地场景中的问题概览

三个问题 AI思维快速工具:需要对接LLM的API、控制幻觉、管理知识库。POC验证四个难点 私有化部署的环境:包括网络和服务器环境。交互友好意想不到的情况方向选择:让客户做目标和方向的选择问题 一、RAG 多跳问题 通常发生在报告编写的数据整理环节,比如要从一堆报表中找…...

基于灰狼优化算法优化支持向量机(GWO-SVM)时序预测

代码原理及流程 基于灰狼优化算法优化支持向量机(GWO-SVM)的时序预测代码的原理和流程如下: 1. **数据准备**:准备时序预测的数据集,将数据集按照时间顺序划分为训练集和测试集。 2. **初始化灰狼群体和SVM模型参数…...

C++中获取int最大与最小值

不知道大家有没有遇到过这种要求:“返回值必须是int,如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。例如,小于 −2^31 的整数应该被固定为 −2^31 ,大…...

学习通高分免费刷课实操教程

文章目录 概要整体架构流程详细步骤云上全平台登录步骤小结 概要 我之前提到过一个通过浏览器的三个脚本就可以免费高分刷课的文章,由于不方便拍视频进行实操演示,然后写下了这个实操教程,之前的三个脚本划到文章末尾 整体架构流程 整体大…...

缓存降级

当Redis缓存出现问题或者无法正常工作时,需要有一种应对措施,避免直接访问数据库而导致整个系统瘫痪。缓存降级就是这样一种机制。 主要的缓存降级策略包括: 本地缓存降级 当Redis缓存不可用时,可以先尝试使用本地进程内缓存,如Guava Cache或Caffeine等。这样可以减少对Redis…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...