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

相关推荐
Ulyanov20 小时前
基于Tkinter/ttk的现代化Python GUI开发全攻略:从布局设计到视觉美化(三)
开发语言·python·gui·tkinter·ttk
FindAI发现力量20 小时前
精通高效沟通逻辑,筑牢稳定开单根基
人工智能·销售管理·ai销售·ai销冠·销售智能体
yivifu20 小时前
完美的PyMuPDF删除pdf页面文字水印
python·pdf·pymupdf·去水印
weixin_4331793320 小时前
python - 读写文件
开发语言·python
LJ979511120 小时前
从SEO到GEO:媒体发布如何让品牌被AI“主动看见”
人工智能
Astro_ChaoXu20 小时前
GAMSE使用日志与教程(高分辨率光谱数据缩减)
linux·数据库·python
即安莉20 小时前
告别本地报错!字节扣子 2.0 史诗级更新:一键部署 OpenClaw,开启 AI 员工“自进化”时代
人工智能
NOCSAH20 小时前
持续进化:从ERP到数智一体化,AI深度融入全链路
大数据·人工智能·统好ai·数智一体化平台
人工智能培训20 小时前
基于知识图谱的故障推理方法与算法
人工智能·python·深度学习·机器学习·知识图谱·故障诊断
央链知播20 小时前
何超稂时丽参加2026北京国际科幻与未来产业博览会
大数据·人工智能·业界资讯