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

相关推荐
AI科技2 分钟前
原创音乐人搭配AI编曲软件,编曲音源下载哪个软件
人工智能
JQLvopkk2 分钟前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
饭饭大王6664 分钟前
CANN 生态深度整合:使用 `pipeline-runner` 构建高吞吐视频分析流水线
人工智能·音视频
初恋叫萱萱5 分钟前
CANN 生态中的异构调度中枢:深入 `runtime` 项目实现高效任务编排
人工智能
简佐义的博客6 分钟前
生信入门进阶指南:学习顶级实验室多组学整合方案,构建肾脏细胞空间分子图谱
人工智能·学习
白日做梦Q6 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
无名修道院7 分钟前
自学AI制作小游戏
人工智能·lora·ai大模型应用开发·小游戏制作
晚霞的不甘15 分钟前
CANN × ROS 2:为智能机器人打造实时 AI 推理底座
人工智能·神经网络·架构·机器人·开源
互联网Ai好者19 分钟前
MiyoAI数参首发体验——不止于监控,更是你的智能决策参谋
人工智能
island131419 分钟前
CANN HIXL 通信库深度解析:单边点对点数据传输、异步模型与异构设备间显存直接访问
人工智能·深度学习·神经网络