(3)在 Linux 系统和 OpenCV 库下进行系统实现[2]。考虑到系统可行性,嵌 入式 Linux 系统体积小,成本低,功耗小,适合在汽车上使用,故留出一部分篇 幅专门讨论本系统在 Linux 系统下使用 OpenCV 库实现系统功能的方法。
1。5 论文结构与内容安排
本文中论述的系统工作流程如图(1-2)所示:
图(1-2) 路标识别系统工作流程 针对此系统的各个环节、关节技术及相关理论,在文中做如下安排: 第一章,阐述系统的研究背景、研究意义,国内外发展现状,主要包括此系
统的设计难点、交通标志分割与定位的常用方法、交通标志分类常用算法等部分。 第二章,介绍系统软硬件平台,包括树莓派 2B 型的硬件配置和 OpenCV 库在
不同平台下的配置和使用。
第三章,介绍 BP 神经网络算法,包括神经网络的基本知识、BP 神经网络模 型的建立、算法推导等
第四章,介绍系统具体的工作原理及流程,主要包括图像预处理、图像分割 和图像分类三个方面,每一个方面结合理论知识阐述系统的实现。
第五章,阐述实验测试的结果与分析。
第二章 OpenCV 库介绍及硬件平台选型
2。1OpenCV 库简介
OpencCV 全称为 Open Sourse Computer Vision Library,是基于开源发行 的跨平台计算机视觉处理库,包含 500 多个优化过的算法,轻量而高效,既可以 用于学术也可以用于商业应用。只要遵守 BSD 协议,便可以自由使用、发布和修 改。OpenCV 库的代码用 C 和 C++编写,同时提供 Python、Ruby、Matlab 等多种 语言的函数接口,高效地实现了图像处理、计算机视觉、GUI 设计、机器学习等 多种算法,并能方便地移植到各种操作平台上,满足多种项目的需求[3]。
OpenCV 库的第一个开源版本于 2006 年 6 月发布,版本名为 OpenCV alpha 3, 到现在已经发展到 VERTION 3。1,被计算机视觉领域的学者和开发人员视为开发 项目首选的工具。自版本 2。2 起,OpenCV 库被划分为了多个模块,这些模块编 译为库文件后被集中放在 lib 文件夹中。常见的模块有以下几个:
· opencv_core,包含库的核心功能,多为最基础的数据结构和算法函数
·opencv_imgproc,包含图像处理函数。
· opencv_highgui,包含用户图形界面相关代码和读写图像及视频函数。
· opencv_features2d,包含兴趣点检测子、描述子及兴趣点匹配框架。
· opencv_calib3d,包含相机定标、双目几何估算、立体视觉等函数。
· opencv_video,包含运动估算、特征跟踪、前景提取等相关的函数与类。
·opencv_objdetect,包含物体检测函数。 库中还包含其他的模块,如机器学习(opencv_ml)、计算几何(opencv_flann),
第三方代码(opencv_contrib)、废弃代码(opencv_legacy)和经 GPU 加速过的 代码(opencv_gpu)。
网上资料较多的为 OpenCV2。3 和 2。4 版本,但在验证过程中发现,常用的 2。4。9 版本在树莓派上运行时其摄像头驱动不匹配,不能更改摄像头分辨率,而 在 2。3。1 版本下运行则没有问题。故本系统选用的 OpenCV 库为 2。3。1 版本。
2。2OpenCV 库的使用
OpenCV 库在不同平台下的使用会有所差别。由于开发阶段需要在 windows
环境下运行程序,验证时又必须在 Linux 下,故有必要介绍不同平台下 OpenCV 库的使用。
2。2。1Windows 平台下 OpenCV 库的使用
由于 OpenCV 是一款跨平台的库,故在 Windows 平台下开发的代码能很方便 地移植到 Linux 平台下。一般而言,嵌入式 Linux 硬件多为低价格、高性价比板 卡,运行性能比不上运行 Windows 系统的 PC,故在系统开发阶段可选用 Windows 平台,在调试无误后再做移植工作,将整套系统移植到 Linux 下验证。下面简单 介绍如何在 Windows 平台下使用 OpenCV 库。 基于OpenCV的路标识别系统设计(4):http://www.youerw.com/zidonghua/lunwen_99070.html