随着计算机技术以及电子技术的迅猛发展,图像作为人类感知世界的最主要来源,是人类获取、表达和传递信息的重要手段,使用计算机进行图像处理的数字图像处理技术迅速发展。OpenCV 开源计算机视觉库成为了在图像处理和计算机视觉方面的热门技术。

OpenCV 具备强大的图像和矩阵运算能力。其丰富的函数处理功能,可以大大减少开发者的工作量,有效提高开发效率和程序运行的可靠性 。因此,OpenCV 广泛用于图像和视频处理中。

在实际生活和生产的过程中,需要对图像进行简单的处理,但是很多不理想的情况下,图像的特征不够凸出,甚至模糊,无法达到预期的效果,因此会有相应的图像去雾技术、自适应去噪技术、分割技术等等。OpenCV 在这些领域中就发挥着很重要的作用。以下是比较典型的一些运用 OpenCV 进行图像特征检测的案例:

  • 用于对车辆轮廓的检测
  • 图像特征的提取和处理
  • 图形边缘检测

OpenCV 的特点

OpenCV 的全称是 Open Source Computer Vision Library ,是一个跨平台的计算机视觉库。它由英特尔公司发起并参与开发,以 BSD 许可证授权发行,可以在商业和研究领域中免费使用。

OpenCV 具有如下的特点:

跨平台

OpenCV 是跨平台的,无论你的操作系统是 Window , Android , Maemo , FreeBSD , OpenBSD , iOS , linux 还是 Mac OS ,都可以使用 OpenCV 进行图像处理。

opencv是深度学习吗 opencv用处_java

多种语言接口

OpenCV 的底层实现是基于 C/C++ 的,它的主要接口也是 C++ 语言,但是依然保留了大量的 C 语言接口。opencv 也提供了多种语言接口(例如 Python , Java , Ruby , Matlab 等等)。这些语言的 API 接口函数可以透过在线文档获取。现在也提供对于 C# , Ch , Ruby 的支持。

OpenCV 的前景与应用场景

如今计算机视觉在机器人应用领域比较广泛,应用前景也是相当好的。opencv 在我们做研究和开发的路上也是发挥着巨大的作用。比如你想制作巡线小车,机械臂色块抓取, 色块追踪小车等的话,那么计算机视觉就是你必须要学习的知识。当然 OpenCV 只是一个库。图像识别,手势识别,图像处理,二维码处理,深度学习,姿势识别等等都可能用到。

OpenCV 的应用场景

系统性的应用

OpenCV 具备强大的图像和矩阵运算能力。具有丰富的处理函数,减少开发者的工作量,有效提高开发效率和程序运行的可靠性 。因此,OpenCV 广泛用于图像处理,近几年,OpenCV 在图像特征检测以及图像识别方面发挥着巨大作用。

图像特征检测

在实际生活和生产的过程中,需要对图像进行简单的处理,但是很多不理想的情况下,图像的特征不够凸出,甚至模糊,无法达到预期的效果,因此会有相应的图像去雾技术、自适应去噪技术、分割技术等等。OpenCV 在这些领域中就发挥着很重要的作用。以下是比较典型的一些运用 OpenCV 进行图像特征检测的案例:

  • 用于对车辆轮廓的检测
  • 图像特征的提取和处理
  • 图形边缘检测

图像内容识别

在计算机视觉领域中,交互信息的检测和判断是十分重要的,而图像又在视觉领域占有很大的比重。因此对于图像内容的识别对于之后对信息做出判断十分重要。此外,在生产领域对图像信息的采集和分析也尤为重要。以下是一些比较典型的图像内容识别的案例:

  • 人脸识别
  • 手势识别
  • 人机交互
  • 动作识别
  • 运动跟踪
  • 物体识别
我们身边的应用(部分例子)
  1. 创建一幅空白图像作为背景图;
  2. 在同一个 cvWindow 上显示多幅图像;
  3. 转换图像的色彩空间;
  4. 根据两个像素点确定直线;
  5. 替换图像中的部分区域;
  6. 在图像上画标记;
  7. 判断一幅图是灰度图还是彩图。

初学者可能遇到的问题

问题一:没有合适的教程

对于小白来讲, 找到一个合适的教程, 就像有人在领路一样, 可以让你更快的入门, 自己也可以少花很多的时间, 当然最重要的是一个好的教程可以让你少走很多的弯路。但是,目前的教程跟博客, 有时候未必可以满足需求,不是内容杂乱不系统,就是内容宽泛不带有实际效用。

问题二:缺乏项目参考

学习 OpenCV ,建议大家结合项目来学习,项目驱动会让你学习更有目的性,接触更多的算法工具,从而进行算法调优。

其实像 github (开源软件代码仓库)上面有很多结合 OpenCV 与机器人的开源代码,但是对于刚入门的新手来讲,只有代码但缺乏文档的工程是很难啃的,而且大部分的开源项目连注释都没有,读起来费时费力。

另外也没有人告诉你为什么在项目里最终采用了这个算法,你无从得知在整个项目中遇到了哪些问题,他是怎么解决的。

问题三:学习周期长

python-opencv 比较简单易用,但是你需要一定 python 科学计算的技术储备(例如 Numpy , Matplotlib 等),还需要花精力学一些 OpenCV 中跟图像处理无关的 API ,比如 OpenCV 中的 HighGUI 组件(写上位机用的)。从开始学习到可以做项目,让人感觉路途漫漫无期,让很多人望而却步或是半途而废。