【OPENMV】学习记录 (持续更新)

一、图像

1 设置彩色/黑白:

  • sensor.set_pixformat() 设置像素模式。
    • sensor.GRAYSCALE: 灰度,每个像素8bit。
    • sensor.RGB565: 彩色,每个像素16bit。

2 设置图像大小:

  • 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 感光元件)

3 自动增益/白平衡/曝光:

  • sensor.set_auto_gain() ——自动增益开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动增益。
  1. 自动调节图像亮度
    • 当光线较暗时,摄像头会自动增加增益,使得图像变得更加明亮。
    • 当光线过强时,摄像头会减少增益,以防止图像过曝。
  2. 适应不同的光照条件
    • 适用于光照变化频繁的场景,如从室内到室外的转换。
    • 在无人值守的监控设备中,可以保证全天候图像质量。
  3. 简化图像处理
    • 不需要手动调整增益参数,简化了图像处理和摄像头配置的复杂性。
    • 提高了图像处理算法的鲁棒性,因为图像亮度的一致性更好。

  • sensor.set_auto_whitebal()——自动白平衡开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动白平衡。

                                                             

  • sensor.set_auto_exposure(enable[\, exposure_us])

    • enable 打开(True)或关闭(False)自动曝光。默认打开。
    • 如果 enable 为False, 则可以用 exposure_us 设置一个固定的曝光时间(以微秒为单位)。

4 设置窗口ROI

sensor.set_windowing(roi)

sensor.set_framesize(sensor.VGA) # 高分辨率
sensor.set_windowing((640, 80)) #取中间的640*80区域

roi的格式是(x, y, w, h)。你可以只传递 (w,h),而 roi 将会在图像中居中。

5 设置翻转

sensor.set_hmirror(True)
# 水平方向翻转

sensor.set_vflip(True)
# 垂直方向翻转

二、画图

1 画线

  • image.draw_line(line_tuple, color=White) 在图像中画一条直线。
    • line_tuple的格式是(x0, y0, x1, y1),意思是(x0, y0)到(x1, y1)的直线。
    • 颜色可以是灰度值(0-255),或者是彩色值(r, g, b)的tupple。默认是白色

2 画框

  • image.draw_rectangle(rect_tuple, color=White) 在图像中画一个矩形框。
    • rect_tuple 的格式是 (x, y, w, h)。

3 画十字

  • image.draw_cross(x, y, size=5, color=White) 在图像中画一个十字
    • x,y是坐标
    • size是两侧的尺寸

三、AprilTag标记跟踪

AprilTag

AprilTag测距代码:

import sensor, image, time, math

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QQVGA) # we run out of memory if the resolution is much bigger...
sensor.skip_frames(30)
sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
sensor.set_hmirror(True)
clock = time.clock()

# f_x 是x的像素为单位的焦距。
# f_y 是y的像素为单位的焦距。
# c_x 是图像的x中心位置
# c_y 是图像的y中心位置

f_x = (2.8 / 3.984) * 160 # 默认值
f_y = (2.8 / 2.952) * 120 # 默认值
c_x = 160 * 0.5 # 默认值(image.w * 0.5)
c_y = 120 * 0.5 # 默认值(image.h * 0.5)

def degrees(radians):
    return (180 * radians) / math.pi

while(True):
    clock.tick()
    img = sensor.snapshot()
    for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): # 默认为TAG36H11
        img.draw_rectangle(tag.rect(), color = (255, 0, 0))
        img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
        distance = math.sqrt(tag.x_translation()**2 + tag.y_translation()**2 + tag.z_translation()**2) * 2.550108137

        # 位置的单位是未知的,旋转的单位是角度
        print("Dis:",distance)

四、多模版匹配

...

五、图像滤波处理

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/676810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端优化之图片压缩——tinyPNG

今天前端前辈新介绍的一个压缩图片的工具——tinyPNG,地址:TinyPNG – Compress WebP, PNG and JPEG images intelligently可以将图片压缩,进行优化。 一、使用方法——手动压缩 将超过200kb的图片拖到我标注的红框框里,拖到这里…

如何快速定位到影响mysql cpu飙升的原因——筑梦之路

通常我们只需要执行show processlist 进行查看,一般执行时间最长的SQL八九不离十就是罪魁祸首,但当show processlist的输出有近千条,那么很难第一眼就发现有问题的SQL,那么如何快速找到呢?其实也非常简单。我们知道mys…

多卡聚合智能融合通信设备在无人机无线视频传输应用

无人驾驶飞机简称“无人机”,是利用(无线电)遥控设备和自备的程序控制装置操纵的不载人飞行器,现今无人机在航拍、农业、快递运输、测绘、新闻报道多个领域中都有深度的应用。 无人机无线视频传输保证地面人员利用承载的高灵敏度照相机可以进行不间断的画…

HCIA--OSPF实验(复习)

实验拓扑&#xff1a; 实验思路&#xff1a; 1.规划IP&#xff0c;配置环回&#xff0c;接口IP 2.把R1&#xff0c;R2优先级改为0&#xff0c;让R1、R2放弃选举&#xff0c; [r1]interface g0/0/0 [r1-GigabitEthernet0/0/0]ospf dr-priority 0 <r1>reset ospf…

【linux】线程同步和生产消费者模型

线程同步 当我们多线程访问同一个临界资源时&#xff0c;会造成并发访问一个临界资源&#xff0c;使得临界资源数据不安全&#xff0c;我们引入了锁的概念&#xff0c;解决了临界资源访问不安全的情况&#xff0c;对于线程而言竞争锁的能力有强有弱&#xff0c;对于之前就抢到…

图形学初识--颜色混合

文章目录 前言正文为什么要有颜色混合&#xff1f;颜色混合常见实现方式&#xff1f;上述颜色混合注意点 结尾&#xff1a;喜欢的小伙伴点点关注赞哦! 前言 本章节补充一下颜色混合的内容&#xff0c;主要包含&#xff1a;为什么要有颜色混合&#xff1f;颜色混合常实现方式&a…

外星人Alienware x17R1 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

全文检索-ElasticSearch

1.基本概念 1.Index索引 动词&#xff1a;相当于MySQL中的insert&#xff1b; 名词&#xff1a;相当于MySQL中的DataBase&#xff1b; 2.Type&#xff08;类型&#xff09; 在Index&#xff08;索引&#xff09;中&#xff0c;可以定义一个或多个类型 类似于MySQL中的Tab…

Docker大学生看了都会系列(二、2.1Mac通过Homebrew安装Docker)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 文章目录 前言Mac通过Homebrew安装本机环境系统要求terminal命令安装查看安装信息配置阿里云镜像加速登陆阿里云配置加速地址其他国内加速地址 总结 前言 在上一章了解了Do…

步进电机双闭环细分控制(matlab仿真)内含课设等参考文件

1.1 步进电机工作原理 步进电机是一种用电脉冲进行控制&#xff0c;将电脉冲信号转换成相位移的电机&#xff0c;其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度。脉冲的数量决定了旋转的总角度&#xff0c;脉…

FebHost:什么是国别国外域名以及用途?

在数字时代的浪潮中&#xff0c;互联网如同一张无形的网&#xff0c;将全球的人们紧密相连。尽管世界因此变得“更小”&#xff0c;但在网络上展示个人或企业身份时&#xff0c;标明国家归属或地理位置依然显得格外重要。今天&#xff0c;我们将深入探讨国别域名的重要性、使用…

查看所用数据库的版本

通过查询 SELECT VERSION();

java面试题及答案2024,java2024最新面试题及答案(之二)

四、反射 57. 什么是反射&#xff1f; 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 Java反射&#xff1a; 在Java运行时环境中&#xff0c;对于任意一个类&#xff0c;能否知道这个类有哪些属性和方法&#xff1f;对于任意一个对象&#xff0c;能否调…

顺序表的讲解与实现

顺序表的讲解与实现 一、顺序表的概念及结构二、顺序表分类顺序表和数组的区别顺序表分类静态顺序表动态顺序表 三、动态顺序表的实现(使用VS2022)1.初始化、销毁、打印内容2.检查扩容3.尾部插入、尾部删除、头部插入、头部删除尾部插入尾部删除头部插入头部删除 4.指定插入、指…

Go语言 几种常见的IO模型用法 和 netpoll与原生GoNet对比

【go基础】16.I/O模型与网络轮询器netpoller_go中的多路io复用模型-CSDN博客 字节开源的netPoll多路复用器源码解析-CSDN博客 一、几种常见的IO模型 1. 阻塞I/O (1) 解释&#xff1a; 用户调用如accept、read等系统调用&#xff0c;向内核发起I/O请求后&#xff0c;应用程序…

装机必备——鲁大师安装教程

装机必备——鲁大师安装教程 软件下载 软件名称&#xff1a;鲁大师 软件语言&#xff1a;简体中文 软件大小&#xff1a;144.75M系统要求&#xff1a;Windows7或更高&#xff0c; 32/64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM2G或更高 下载通道①迅雷云盘丨…

探究 Meme 的金融与社交属性

原文标题&#xff1a;《A Social and Financial Study of Memecoins》撰文&#xff1a;Andrew Hong编译&#xff1a;Chris&#xff0c;Techub News 每一个市场周期都伴随着 Meme 代币的出现。一群人围绕着某个 Meme 集结起来&#xff0c;暂时抬高了某个资产的价格&#xff08;从…

YOLOv5白皮书-第Y5周:yolo.py文件解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境 语言&#xff1a;Python3、Pytorch开发环境电脑系统&#xff1a;Windows 10语言环境&#xff1a;Python 3.9.2编译器&#xff1a;VS Code显卡&#…

LeetCode刷题之HOT100之组合总和

2024/6/3 周一&#xff0c;工作日的第一天。昨晚梦到被导师说去实验室不积极哈哈哈&#xff0c;风扇开到二级&#xff0c;早上被吹醒。买的书马上快要到了。上午刚来准备刷题&#xff0c;结果去搞了一下数据库sql&#xff0c;做的差不多了&#xff0c;还差点格式转换就差不多出…

暴力数据结构之排序大杂烩

1. 冒泡排序&#xff1a;O(N^2) 逻辑解析&#xff1a; 冒泡排序并没有什么实际意义&#xff0c;但是有教学意义&#xff0c;相信大部分小白在学习的初期第一个接触的排序就是冒泡排序。那么接下来我们了解一下他的底层逻辑&#xff1a; 冒泡排序顾名思义就是将最大&#xff08…