K230 OpenCV (cv2) 介绍

教程基于CanMV_K230_YAHBOOM_micropython_v1.8-13固件,跑OpenCV案例需要micropython_v1.8以上的固件

1. 为什么用 OpenCV 库

K230 上有两套视觉处理方案:cv_litecv2(OpenCV)。它们的关系和选择逻辑:

对比

 cv_litecv2 (OpenCV)
调用方式单个函数完成整个算法链多步自由组合
典型代码cv_lite.rgb888_find_blobs(img, thr, area, ksize)cvtColor → GaussianBlur → Canny → findContours
灵活性低(每个函数是黑盒)高(每一步可控可替换)
可调试性难(中间结果不可见)易(每步都能显示出来看)
功能广度约 15 个原子操作50+ 标准 OpenCV 函数
学习价值硬件厂商绑定通用技能,和桌面 OpenCV 一致
适用场景快速验证硬件、单一任务产线算法开发、学习、原型验证

选 cv2 的三个理由

1. 标准 API,一次学会到处能用

K230 上的 cv2 是标准 OpenCV 的 MicroPython 移植——函数名、参数、常量都和桌面版一致。在 K230 上学会 cv2.Canny(),到了 PC/Raspberry Pi/Jetson 照样写。

2. 自由组合,不受封装限制

cv_lite 的 find_blobs 内部做了二值化+连通域+面积过滤——如果某个环节参数不合适,你换不了也看不到中间结果。cv2 让你自己搭管线:换个阈值方法、换种模糊、加个形态学,完全自定义。

3. 覆盖面广,一库走天下

50+ 函数覆盖了色彩转换、几何变换、阈值、滤波、边缘、形态学、轮廓、霍夫检测、模板匹配、算术运算、通道操作、绘图——基本覆盖了嵌入式视觉的全部需求。

选 cv_lite 的场景

如果你只需要"找个红色色块算距离"这种固定任务,cv_lite 一行代码更快、更省内存。它把全套流程编译成了 C 扩展,避免了 Python 层的多次调用开销。


2. 什么是 K230 OpenCV

K230 上的 OpenCV 是标准 OpenCV 的 MicroPython 移植版(import cv2),运行在 CanMV 固件之上。它提供了 OpenCV 核心图像处理函数,通过摄像头(Sensor)采集实时画面,在 IDE 中虚拟显示(Display)。

3. 环境要求

组件说明
硬件YAHBOOM K230 开发板 + 摄像头模组
固件CanMV_K230_YAHBOOM_micropython_v1.8-13
IDECanMV IDE 或 VS Code + CanMV 插件
分辨率默认 640x480

参考网页K230 MicroPython Daily Build 下载中心

image-20260728180123781

4. 基本程序结构

5. 显示方式

输出类型显示方法
彩色图cv2.xxx(img_np, ...)Display.show_image(img)
灰度图image.Image(W,H,image.GRAYSCALE,alloc=image.ALLOC_REF,data=out)Display.show_image(img_out)
⚠️ 彩色图 + image.ImageK230 不支持 image.Image(RGB888, ALLOC_REF, data=cv2_output)

6. K230 特有限制

限制说明
cv2.add 不支持标量广播必须两个同尺寸数组
cv2.compare 需要 float64标量必须是浮点型
HoughCircles 返回 (N,3)不是标准 OpenCV 的 (N,1,3)
HoughLines 返回 (N,2)不是 (N,1,2)
approxPolyDP 返回 (N,2)不是 (N,1,2)
image.Image(RGB888, ALLOC_REF)只能用 sensor 原生 img 对象
np.float32 不存在ulab 只支持 np.float
np.array() dtype 关键字循环内可能报错,建议省略
cv2.putText 灰度图标量颜色用 (255,) 元组而非 255

7. 性能参考

操作类型640x480 帧率优化手段
像素操作(flip/resize/threshold)50-80 fps
局部卷积(blur/morphology/edge)15-30 fps缩小核尺寸
全局搜索(Hough/matchTemplate)3-10 fps降采样 320x240 处理

8. opencv_demo 合集

17 个可独立运行的摄像头 demo,每个对应一个原始 OpenCV 文件,覆盖 50+ cv2 函数。

学习路线