04-openCV简单图片操作

本章介绍如何用openCV处理图片。

源码路径

源码位于:04-opencv-test文件夹中。

工程代码实现用openCV读取一张图片。并在盒子屏幕上显示。

显示用两种方式实现。第一种是纯CPU计算图像转换。第二种是调用盒子硬件功能kmAI_MiniUI_LCDdisplay显示。

本章小结

本章主要学习kmAI_MiniUI_LCDdisplay函数。kmAI_MiniUI_LCDdisplay可以理解为GPU显示图像。是纯硬件的。不会占用CPU时间。

可以运行代码对比一下两种方式的耗时。

注意:本文不对OpenCV的用法做过多介绍。请自行学习OpenCV相关知识。OpenCV是机器视觉不可或缺的基础知识。

你可以以本工程为模板。学习openCV。

代码走读

opencv函数用法请参考openCV官网。本章节只对盒子特有的代码说明。

1745474541214

代码流程:

imread:读取图片。(代码中为读取test.jpg。运行时请将对应文件下载到开发板内部)

TIMER duration:是一个计时类。当需要统计某段代码耗时时可以这样调用:

duration.tik();//开始计时

...... //此处为你要统计耗时的代码

duration.tok();//停止计时

duration.print_time("这里会打印上面代码耗时时间");

读取到图像后。首先用CPU来转换缩放图片显示。

最后对原图用kmAI_MiniUI_LCDdisplay函数显示。

kmAI_MiniUI_LCDdisplay 直接显示openCV的img图像

此函数输入参数为openCV的mat矩阵。不需要区分分辨率。直接显示到屏上。

运行结果

记得将test.jpg下载到开发板内部。

1745475038701

由上述打印可知。输入图片大小为1024x1404。

CPU读取图片耗时31ms。

用CPU缩放图片并显示到开发板屏幕上耗时24.5ms。

用盒子kmAI_MiniUI_LCDdisplay函数做上述同样的操作需要5.5ms。

从上述代码可知。如果用CPU显示图像,一帧需要耗时25ms。最大帧率为40Hz.

如果用kmAI_MiniUI_LCDdisplay来刷新图像。一帧需要6ms。最大帧率可以支持到167Hz.

并且还不占用CPU时间。

FAQ常见问题

如何退出程序

1、控制台直接按键盘ctr+c

2、按键盘End快捷键(切换到内部UI快捷键,以你设置的为准)