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

图像处理篇---基本OpenMV图像处理


文章目录

  • 前言
  • 1. 灰度化(Grayscale)
  • 2. 二值化(Thresholding)
  • 3. 掩膜(Mask)
  • 4. 腐蚀(Erosion)
  • 5. 膨胀(Dilation)
  • 6. 缩放(Scaling)
  • 7. 旋转(Rotation)
  • 8. 平移(Translation)
  • 9. 边缘检测(Edge Detection)
  • 10. 轮廓检测(Contour Detection)
  • 11.总结
  • 总结


前言

以上就是今天要讲的内容,本文仅仅简单介绍了Openmv中常见的图像处理操作(灰度化、掩膜、二值化、腐蚀、膨胀、缩放、旋转、平移、边缘检测、轮廓检测)


1. 灰度化(Grayscale)

将彩色图像转换为灰度图像,减少计算量。

实现方法:

import sensorsensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)  # 设置为灰度模式
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()  # 捕获灰度图像

2. 二值化(Thresholding)

将灰度图像转换为黑白图像,通过设定阈值分离目标区域。

实现方法:

import sensorsensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)threshold = (100, 255)  # 阈值范围while True:img = sensor.snapshot()img.binary([threshold])  # 二值化处理

3. 掩膜(Mask)

通过掩膜操作提取图像中的特定区域。

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)mask = image.Image(size=(100, 100), copy_to_fb=True)  # 创建掩膜
mask.draw_rectangle(20, 20, 60, 60, color=255, fill=True)  # 在掩膜上绘制白色矩形while True:img = sensor.snapshot()img.mask(mask)  # 应用掩膜

4. 腐蚀(Erosion)

去除图像中的细小噪声,使目标区域缩小

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.erode(1)  # 腐蚀操作,参数为腐蚀次数

5. 膨胀(Dilation)

填充目标区域中的空洞,使目标区域扩大

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.dilate(1)  # 膨胀操作,参数为膨胀次数

6. 缩放(Scaling)

调整图像大小。

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.scale(x_scale=0.5, y_scale=0.5)  # 缩放为原来的一半

7. 旋转(Rotation)

旋转图像。

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.rotation_corr(angle=45)  # 旋转45度

8. 平移(Translation)

平移图像。

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.translation(x_offset=10, y_offset=10)  # 向右下方平移10像素

9. 边缘检测(Edge Detection)

检测图像中的边缘

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()img.find_edges(image.EDGE_CANNY, threshold=(50, 80))  # Canny边缘检测

10. 轮廓检测(Contour Detection)

检测图像中的轮廓

实现方法:

import sensor, imagesensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)while True:img = sensor.snapshot()contours = img.find_contours(threshold=2000)  # 查找轮廓for contour in contours:img.draw_rectangle(contour.rect(), color=127)  # 绘制轮廓矩形框

11.总结

功能 方法 描述
灰度化 sensor.set_pixformat(sensor.GRAYSCALE) 将图像转换为灰度图
二值化 img.binary([threshold]) 将灰度图转换为黑白图
掩膜 img.mask(mask) 提取图像中的特定区域
腐蚀 img.erode(iterations) 去除噪声,缩小目标区域
膨胀 img.dilate(iterations) 填充空洞,扩大目标区域
缩放 img.scale(x_scale, y_scale) 调整图像大小
旋转 img.rotation_corr(angle) 旋转图像
平移 img.translation(x_offset, y_offset) 平移图像
边缘检测 img.find_edges() 检测图像中的边缘
轮廓检测 img.find_contours() 检测图像中的轮廓
通过以上功能,OpenMV 可以实现丰富的图像处理任务,适用于嵌入式机器视觉应用。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了Openmv中常见的图像处理操作(灰度化、掩膜、二值化、腐蚀、膨胀、缩放、旋转、平移、边缘检测、轮廓检测)

相关文章:

图像处理篇---基本OpenMV图像处理

文章目录 前言1. 灰度化(Grayscale)2. 二值化(Thresholding)3. 掩膜(Mask)4. 腐蚀(Erosion)5. 膨胀(Dilation)6. 缩放(Scaling)7. 旋转…...

一文讲清springboot所有注解

Spring Boot 注释是提供有关 Spring 应用程序信息的元数据。 基于 Spring 构建,涵盖其所有功能, Spring Boot 因其生产就绪环境而迅速成为开发人员的最爱,它允许开发人员直接专注于逻辑,而无需配置和设置的麻烦。 Spring Boot 是一…...

pytest测试专题 - 1.1 运行pytest

<< 返回目录 1 pytest学习笔记 - 1.1 运行pytest 1.1 运行pyest 在命令行执行pytest --help usage: pytest [options] [file_or_dir] [file_or_dir] [...] ... ...1.1.1 pytest不携带参数 pytest不带参数时&#xff0c;会扫描当前目录下的所有目录、子目录中符合测试用…...

Java多线程——线程池的使用

线程饥饿死锁 在单线程的Executor中&#xff0c;如果任务A将任务B提交给同一个Executor&#xff0c;并且等待任务B的结果&#xff0c;就会引发死锁线程池中所有正在执行任务的线程由于等待其他仍处于工作队列中的任务而阻塞 执行时间较长的任务 执行时间较长的任务不仅会造成…...

NO.15十六届蓝桥杯备战|while循环|六道练习(C++)

while循环 while语法形式 while 语句的语法结构和 if 语句⾮常相似&#xff0c;但不同的是 while 是⽤来实现循环的&#xff0c; if 是⽆法实现循环的。 下⾯是 while 循环的语法形式&#xff1a; //形式1 while ( 表达式 )语句; //形式2 //如果循环体想包含更多的语句&a…...

DeepSeek 从入门到精通学习指南,2025清华大学《DeepSeek从入门到精通》正式发布104页pdf版超全解析

DeepSeek 是一款强大的 AI 搜索引擎&#xff0c;广泛应用于企业级数据检索和分析。无论您是初学者还是有经验的用户&#xff0c;掌握 DeepSeek 的使用都能为您的工作带来极大的便利。本文将从入门到精通&#xff0c;详细介绍如何学习和使用 DeepSeek。 链接: https://pan.baid…...

2025年SEO自动优化工具

随着2025年互联网的快速发展&#xff0c;越来越多的企业和个人意识到&#xff0c;拥有一个排名靠前的网站对于吸引客户、增加流量、提高转化率至关重要。而要想让自己的网站脱颖而出&#xff0c;获得更多曝光&#xff0c;最重要的一项工作就是进行SEO优化。传统的SEO优化方式通…...

KEPServerEX 的接口类型与连接方式的详细说明

目录 一、KEPServerEX 核心架构 二、KEPServerEX 支持的接口类型 三、KEPServerEX 支持的连接类型 1. 通用工业协议 2. 品牌专属协议 3. 行业专用协议 4. 数据库与文件接口 四、配置示例 1. 接口配置&#xff08;以OPC UA为例&#xff09; 2. 连接配置&#xff08;以…...

AGI时代的认知重塑:人类文明的范式转移与思维革命

文章目录 引言:站在文明转型的临界点一、认知危机:当机器开始理解世界1.1 AGI的本质突破:从模式识别到世界建模1.2 人类认知的脆弱性暴露二、认知革命:重构思维的四个维度2.1 元认知升级:从直觉思维到二阶观察2.2 混合智能:人机认知回路的构建2.3 认知安全:防御机器思维…...

OmniManip:以目标为中心的交互基元作为空间约束实现通用机器人操作

25年1月来自北大、北大-智元实验室和智元机器人公司的论文“OmniManip: Towards General Robotic Manipulation via Object-Centric Interaction Primitives as Spatial Constraints”。 开发能够在非结构化环境中进行操作的通用机器人系统是一项重大挑战。虽然视觉-语言模型 …...

论文第二次阅读笔记

摘要学习 存在问题:目前流行的图神经网络仅通过欧几里得几何及其相关的向量空间操作来建模数据,存在局限性 我们通过提出一种数学上有根据的图卷积网络(GCN)的推广,将其扩展到常曲率空间(或其乘积空间),从而填补了这一空白。 一是引入一种统一的形式主义,可以在所有常…...

【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪

文章目录 【Android 开发 AI 实战】选择目标跟踪基于 opencv 实现 —— 运动跟踪一、引言二、Android 开发与 AI 的融合趋势三、OpenCV 简介四、运动跟踪原理&#xff08;一&#xff09;光流法&#xff08;二&#xff09;卡尔曼滤波&#xff08;三&#xff09;粒子滤波 五、基于…...

系统漏洞扫描服务:安全风险识别与防护指南

系统安全的关键在于漏洞扫描服务&#xff0c;此服务能迅速发现潜在的安全风险。借助专业的扫描工具和技术&#xff0c;它确保系统稳定运作。以下将简要介绍这一服务的主要特点。 扫描原理 系统漏洞扫描服务依赖两种主要手段&#xff1a;一是通过漏洞数据库进行匹配&#xff0…...

2.Excel:滨海市重点中学的物理统考考试情况❗(15)

目录 NO12​ 1.数据透视表​ 2. 3.sum函数 4.sumifs客观/主观平均分​ 5.sumifs得分率​ 6.数字格式修改​ NO3/4/5​ sumifs某一组数据相加&#xff0c;某一范围&#xff0c;某一范围的具体点向下拖拉&#xff0c;锁定列&#xff1b;向左右&#xff0c;锁定行F4&#x…...

使用 React 16+Webpack 和 pdfjs-dist 或 react-pdf 实现 PDF 文件显示、定位和高亮

写在前面 在本文中&#xff0c;我们将探讨如何使用 React 16Webpack 和 pdfjs-dist 或 react-pdf 库来实现 PDF 文件的显示、定位和高亮功能。这些库提供了强大的工具和 API&#xff0c;使得在 Web 应用中处理 PDF 文件变得更加容易。 项目设置 首先&#xff0c;我们需要创建…...

驱动开发系列35 - Linux Graphics GEM Buffer Object 介绍

一:概述 在 Linux 内核中,DRM(Direct Rendering Manager)模块 是用于管理显示硬件和图形渲染的核心框架。它负责协调用户空间应用程序(例如 X Server、Wayland Compositors、Mesa 等)和 GPU 硬件之间的通信,是 Linux 图形子系统的重要组成部分。 GEM (Graphics Executio…...

Java常见的异常类有哪些?

对应异常&#xff1a; 空指针 → NullPointerException数据库 → SQLException数组越界 → IndexOutOfBoundsException文件丢失 → FileNotFoundExceptionIO问题 → IOException强制转 → ClassCastException方法找不到 → NoSuchMethodException数组类型错 → ArrayStoreExce…...

清华大学新闻与传播学院沈阳团队出品的《DeepSeek:从入门到精通》104页PDF

前言 本机运行DeepSeek R1大模型文章如下&#xff1a; Windows电脑本地部署运行DeepSeek R1大模型&#xff08;基于Ollama和Chatbox&#xff09;【保姆级万字教程】在Windows计算机部署DeepSeek大模型&#xff0c;给在实验室无外网的同事们用&#xff08;基于Ollama和OpenWebUI…...

增量hdfs数据追平

1、假设客户只改了最近的分区。他不会去修改历史的分区表&#xff0c;如果大量改历史的分区表&#xff0c;那纯纯把hive当mysql用了。这样我们就只能找出变动的表&#xff0c;然后删除&#xff0c;重新迁移。 2、此处是确保他们不会大量改历史分区&#xff0c;只有少部分改&am…...

Linux高并发服务器开发 第十七天(管道缓存区查询大小 管道的优劣 命名管道mkfifo 建立释放映射区mmap/munmap 匿名映射 进程间的通信)

目录 1.pipe管道读写行为 1.1例题&#xff1a;实现父子进程 ls | wc -l 1.2兄弟进程 ls | wc -l 2.管道缓存区 2.1命令查询 2.2函数查询 3.pipe管道的优劣 4.命名管道 fifo 5.mmap 5.1文件进程间通信 5.2建立、释放映射区 5.3匿名映射 6.进程间通信 6.1父子进间通…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...