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