openmv带颜色圆环识别 工程训练
时间: 2025-06-29 15:24:31 浏览: 8
### OpenMV 颜色圆环识别教程
#### 初始化与配置
为了在OpenMV平台上进行颜色圆环识别,首先需要初始化串口通信以便后续调试和数据传输。对于OpenMV2设备而言,仅支持串口3用于外部连接,因此需特别注意这一点[^1]。
```python
from pyb import UART
uart = UART(3, 19200)
uart.init(19200, bits=8, parity=None, stop=1)
```
#### 图像处理库导入
接着引入必要的图像处理模块`sensor`, `image`等,并设置摄像头参数以适应特定应用场景需求:
```python
import sensor, image, time
sensor.reset() # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000) # Wait for settings take effect.
clock = time.clock()
```
#### 定义目标特征提取函数
基于给定的颜色阈值范围筛选感兴趣区域内的圆形物体。这里采用霍夫变换法来进行精确的圆周轮廓匹配操作。需要注意的是,在调用HoughCircles之前应当调整各个控制变量如dp、param1至适合当前环境条件下的最佳取值区间内[^3]。
```python
def find_circular_blobs(img):
blobs = img.find_blobs([(30, 100, 15, 127, 15, 127)], pixels_threshold=200, area_threshold=200, merge=True)
for b in blobs:
roi_img = img.copy(b.rect())
circles = roi_img.find_circles(threshold = 3500, x_margin = 10, y_margin = 10, r_margin = 10,
r_min = 2, r_max = 100, r_step = 2)
if not circles is None:
most_area_circle = max(circles, key=lambda c: c.area())
img.draw_circle(most_area_circle.x(), most_area_circle.y(), most_area_circle.r(), color=(255,0,0))
uart.write(str((most_area_circle.x(), most_area_circle.y(), most_area_circle.r()))+"\n")
while(True):
clock.tick()
img = sensor.snapshot()
find_circular_blobs(img)
print(clock.fps())
```
此段脚本实现了连续捕获视频流帧并对每一帧执行上述定义好的find_circular_blobs逻辑流程;一旦发现符合条件的目标对象,则会将其位置信息经由UART接口发送出去供其他硬件单元进一步解析应用。
阅读全文
相关推荐
















