OpenCV入门

2018-03-08AI
OpenCV
OpenCV

OpenCV是一个开源的计算机视觉库,广泛应用于各种图像处理,人脸识别,图像分析,自动驾驶等领域。目前最新版是3.4.1,本文基于最新版编写。

OpenCV使用C++编写,采用了模块化的结构,本文将逐个介绍每个模块的主要功能,并将介绍如何使用Java调用OpenCV库。

<!--more-->

1.模块

  • Core functionality核心功能,定义了一些其它模块需要使用的基本功能,以及包括多维数组Mat在内的众多数据结构。OpenCV的图像处理主要就是针对Mat对象。
  • Image processing图像处理,包括线性和非线性图像滤波,几何图像转换(调整大小,仿射和透视变形,通用基于表格的重新映射),色彩空间转换,直方图等。
  • imgcodecs图片读写
  • calib3d3D处理,基本多视图几何算法,单个和立体相机校准,对象姿态估计,立体对应算法以及三维重建元素。
  • features2d特征点处理,显着特征检测器,描述符和描述符匹配器。
  • objdetect物体检测,物体检测和预定义的类别(例如,脸部,眼睛,杯子,人物,汽车等)。
  • highguiUI,一个简单易用的UI接口。
  • Video I/O视频IO,一个简单易用的视频捕捉和视频编解码器接口。
  • gpuGPU加速,不同OpenCV模块的GPU加速算法。
  • dnn深度神经网络
  • ml机器学习
  • flann多维聚类和搜索。包含大数据集中的快速最近邻搜索和高维特征而优化的算法集合。
  • photo照片处理,降噪,HDR,无缝克隆,细节增强等。
  • stitching图像拼接,降噪,HDR,无缝克隆,细节增强等。
  • shape形状,形状距离和匹配。
  • superres超分辨率
  • videostab视频防抖
  • viz3D虚拟化

还有一些其它扩展模块。

2.配置Java开发环境

  1. 下载Windows版OpenCV
  2. 解压后在build文件夹中找到java文件夹,复制到Java工程的libs文件夹里
  3. opencv-341.jar添加依赖
  4. VM option 添加本地库配置:-Djava.library.path=./libs/x64

3.Hello OpenCV


Mat mat = Imgcodecs.imread(file.getAbsolutePath());
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_BGR2GRAY);
Imgproc.Canny(mat, mat, 5, 20);
Image img = Utils.mat2Image(mat);
controller.setImage(img);

运行结果如图:

OpenCV
OpenCV

评论区

暂无评论