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


文章目录

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

前言

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


1. 灰度化(Grayscale)

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

实现方法:

python 复制代码
import sensor

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)  # 设置为灰度模式
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)

while True:
    img = sensor.snapshot()  # 捕获灰度图像

2. 二值化(Thresholding)

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

实现方法:

python 复制代码
import sensor

sensor.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)

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

实现方法:

python 复制代码
import sensor, image

sensor.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)

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

实现方法:

python 复制代码
import sensor, image

sensor.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)

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

实现方法:

python 复制代码
import sensor, image

sensor.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)

调整图像大小。

实现方法:

python 复制代码
import sensor, image

sensor.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)

旋转图像。

实现方法:

python 复制代码
import sensor, image

sensor.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)

平移图像。

实现方法:

python 复制代码
import sensor, image

sensor.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)

检测图像中的边缘

实现方法:

python 复制代码
import sensor, image

sensor.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)

检测图像中的轮廓

实现方法:

python 复制代码
import sensor, image

sensor.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中常见的图像处理操作(灰度化、掩膜、二值化、腐蚀、膨胀、缩放、旋转、平移、边缘检测、轮廓检测)

相关推荐
新知图书几秒前
工作分解结构辅助生成(使用千问)
人工智能·千问·高效办公
love530love5 分钟前
ComfyUI MediaPipe 终极填坑:解决 incompatible function arguments 报错,基于代理模式的猴子补丁升级版
人工智能·windows·comfyui·mediapipe·猴子补丁·monkey patch·python 3.12
dingzd958 分钟前
Facebook强化原创内容分发后跨境品牌如何重做素材策略
大数据·人工智能·新媒体运营·内容营销·跨境
卢子墨10 分钟前
Hermes Agent + 钉钉适配文档(重点解决图片引用识别问题)
人工智能·aigc·harness
2301_8159019713 分钟前
SQL如何将多行记录聚合成逗号分隔字符串_GROUP_CONCAT技巧
jvm·数据库·python
西索斯15 分钟前
Claude API 报 529 Overloaded 怎么办?3 种方案实测,最后一种最省心
python·claude
小民AI实战笔记15 分钟前
GitHub Actions + 钉钉,半小时搭个免费的热榜推送机器人
人工智能·aigc·ai编程
Flittly15 分钟前
【LangGraph新手村系列】(3)PostgreSQL 持久化检查点:让状态跨越进程与重启
人工智能·python·langchain
麦芽糖021917 分钟前
大模型二 Agent入门实战(AI私厨)
人工智能
.柒宇.19 分钟前
FastAPI 基础指南:从入门到实战
开发语言·python·fastapi