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官网。本章节只对盒子特有的代码说明。
代码流程:
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下载到开发板内部。
由上述打印可知。输入图片大小为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快捷键,以你设置的为准)