|
前言:Unity的应用领域非常广泛,除了主要用于游戏开发外,它也涵盖了其它非常多的领域。AR,VR,图像处理......。这也是我如此喜爱它的原因,而应用商店超级丰富的插件资源,更是给Unity的应用提供了无限可能。
接下来这段时候,我准备用一个系列来仔细分析一下Unity应用商店中的一款非常厉害的图像处理相关的插件——OpenCVForUnity,进而探索Unity在图像处理相关方面的应用。
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
API文档:
官方文档:
而OpenCVForUnity可以说是用C#对OpenCV原生的API进行了一次封装,使我们在Unity中使用起来相当方便。
插件从应用商店下载并导入后,需要按照提供的文档做一些适当的调整(如允许unsafe代码,调整一些资源的目录)。插件目录结构如下:
插件目录结构
其中Examples为插件提供的实例,后面分析主要从这些实例着手。插件核心代码在org/opencv,这里定义了OpenCV的主要算法,每个文件夹代表一个主要模块。opencv_contrib是opencv一些“额外”模块和功能,这些模块通常没有稳定的API,并且未经充分测试。
下面列举下主要模块的功能(来自官网):
核心功能(core)-定义基本数据结构的紧凑模块,包括密集的多维数组Mat和所有其他模块使用的基本功能。图像处理(imgproc)-一种图像处理模块,包括线性和非线性图像过滤,几何图像转换(调整大小,仿射和透视变形,基于常规表的重新映射),颜色空间转换,直方图等。视频分析(video)-视频分析模块,其中包括运动估计,背景减法和对象跟踪算法。摄像机校准和3D重构(calib3d)-基本的多视图几何算法,单摄像机和立体摄像机校准,对象姿态估计,立体对应算法以及3D重构元素。2D要素框架(features2d)-显着特征检测器,描述符和描述符匹配器。对象检测(objdetect)-检测对象和预定义类的实例(例如,面孔,眼睛,杯子,人,汽车等)。高级GUI(highgui)-简单的UI功能的易于使用的界面。视频I / O(videoio)-用于视频捕获和视频编解码器的易于使用的界面。...其他一些辅助模块,例如FLANN和Google测试包装器,Python绑定等。
基础操作
接下来提一下插件自带的一个基础实例:
基础操作实例
这个示例代码中展示了我们使用OpenCV时经常用到的一些基础操作(其实基本就是对Mat容器的操作)。示例代码很长,建议亲自打开对应的脚本查看。代码中出现了较多的操作函数,可以通过文章开始提供的文档页面直接查找。查看前可以先看下这个教程效果更佳:
顺带提下Mat类型的定义:比如CV_8UC1代表的是每个元素存储的是一个单通道的8位无符号数。详解参看 官网文档或者
在New一个Mat时,构造函数通常为 public Mat(int rows, int cols, int type),这里第一个是row,对应着图片的高,第二个参数是col,对应图片的宽。这与Texture2D的构造函数的参数是不一致的。
我后面的文章会以插件提供的示例为起点,对插件及其应用进行较细致的分析,敬请期待! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|