1.OpenCV,主要以算法形式,展示其实现;也就是说,它实际提供的是各种图像处理算法。若需具体应用,需要组合其算法以实现某个功能。
OpenCV 的全称 Open Source Computer Vision Library,是一个基于BSD许可(开源)发行的跨平台计算机视觉库,又名 “开源计算机视觉库”。OpenCV 是一个开源发行的跨平台计算机视觉库,可运行在 Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux 和 Mac OS 等平台。使用者可在 SourceForge 获得官方版本, 或从 SVN 获得开发版本。OpenCV 也用 CMake。
在 Windows 上编译 OpenCV 中与摄像输入有关部分时,需要 DirectShow SDK 中的一些基类。该 SDK 可从预先编译的 Microsoft Platform SDK (or DirectX SDK 8.0 to 9.0c / DirectX Media SDK prior to 6.0) 的子目录 Samples\Multimedia\DirectShow\BaseClasses 获得。
OpenCV 轻量且高效 —— 由一系列 C 函数和少量 C++ 类构成,同时提供了 Python、Ruby、MATLAB 等语言接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 用 C++ 语言编写,它的主要接口也是 C++ 语言,但依然保留了大量的 C 语言接口。OpenCV 库也有 Python、Java、MATLAB/OCTAVE (版本 2.5) 接口。这些语言的 API 接口函数,可通过在线文档获得。如今,OpenCV 也提供对于 C#、Ch、Ruby 的支持。
OpenCV 所有新开发和算法都采用 C++ 接口。
OpenCV 拥有包括 500 多个 C 函数的跨平台中、高层 API。OpenCV 不依赖于其它的外部库 —— 尽管也可使用某些外部库。
1999 年 Intel 开始建立 OpenCV,如今由 Willow Garage 提供支持。
OpenCV 为 Intel ® Integrated Performance Primitives (IPP) 提供了透明接口。这意味着,如果有为特定处理器优化的 IPP 库, OpenCV 将在运行时自动加载这些库。OpenCV 2.0 版代码已显著优化,无需 IPP 来提升性能,故 2.0 版不再提供 IPP 接口。
2010 年 9 月实现 CUDA 的 GPU 接口。
2015 年 6 月 4 日发布 OpenCV 3.0。
2016年12月,发布OpenCV 3.2版(合并969个修补程序,关闭478个问题)。
2017年8月3日,发布OpenCV 3.3版(最重要的更新是把DNN模块从contrib里面提到主仓库)。
2017年12月23日发布,最新版本是3.4 。
2.imageMagic主要以应用形式,展示其实现,;譬如:图像切割、图像融合、图像模糊、图像锐化等。
ImageMagick 是一个免费开源、用于编辑、创建、合成图像的工具。ImageMagick 可读取、转换、写入多种格式图像。包括:图像切割、颜色替换、各种效果的应用,图像旋转、组合、文本、直线、多边形、椭圆、曲线、附加到图像伸展旋转、等等。
ImageMagick 遵守 GPL 许可协议,是一个免费工具:完全开放源码,可自由使用、复制、修改、发布;它可运行于大多数操作系统。ImageMagick 几乎可在任何非专有操作系统上编译,无论是 32 位还是 64 位 CPU,包括:Linux、Windows 95/98/ME/NT 4.0/2000/XP、Windows 2003、Windows 7、Windows 8、Macintosh (MacOS 9 /10)、VMS 和 OS/2。ImageMagick 的大多数功能的用法都是使用命令行。
ImageMagick 是一套功能强大、稳定且开源的工具集、开发包。可用来读、写和处理超过 200 多种格式的图片文件,包括流行的 TIF、JPG、JPEG、GIF、 PNG、PDF 以及 PhotoCD 等格式。
ImageMagick 可根据 Web 应用程序的需要动态生成图片, 可对一个(或一组)图片进行缩放、旋转、锐化、减色或增加特效等操作,并将操作结果以相同格式或其它格式保存;对图片的操作,即可通过命令行进行,也可通过 C/C++、Perl、Java、PHP、Python 或 Ruby 编程完成。同时 ImageMagick 还提供了一个高质量的 2D 工具包,部分支持 SVG。ImageMagick 的主要精力集中在性能,减少 Bug 以及提供稳定的 API 和 ABI 上。
3.GraphicsMagick号称图像处理领域的瑞士军刀。其短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作。
GraphicsMagick 号称图像处理领域的瑞士军刀。GraphicsMagick 短小精悍的代码,却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作。
GraphicsMagick 支持大图片的处理,且做过 GB 级的图像处理实验。GraphicsMagick 能动态生成图片,特别适于互联网应用。
GaphicsMagick 不仅支持命令行模式,同时也支持 C、C++、Perl、PHP、Tcl、 Ruby、Lua、Python、Windows .NET、Windows COM 编程接口等的调用。事实上,GraphicsMagick 是从 ImageMagick 5.5.2 分支出来的,现在它已变得更稳定和更优秀,相比之下。
GraphicsMagick 可用来处理调整图片尺寸、旋转、加亮、颜色调整、增加特效等。GraphicsMagick 支持超过 88 种图像格式,包括重要的 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM 和 TIFF。通过使用 OpenMP 可利用多线程进行图片处理,增强了通过扩展 CPU 提高处理能力。
GraphicsMagick 可在绝大多数平台上使用,包括 Linux、Mac OS、Windows (2000、XP、Vista、7、8.X、10) 操作系统。
三种库的优势对比:
OpenCV 比较 ImageMagick:
(1).OpenCV 和 ImageMagick 代码都开源,方便开发;
(2).ImageMagick 最近更新不多,OpenCV 近几年有 Intel 的支持更新比较及时,功能越来越强大,bug 修复也比较及时;
(3).ImageMagick 使用简便;OpenCV 的使用稍微复杂,对使用者有一定的图像技术要求;
(4).ImageMagick 封装较好,使用灵活度稍低;OpenCV 使用比较灵活;
(5).ImageMagick 功能实现较少,主要是一些常用的图像处理,很多比较复杂的图像处理并没有实现。OpenCV 的算法实现非常强大,且从其最近版本更新的速度来看,它更加强大,很多经典的图像处理算法都有实现。作为一个图像开发者,这是一个很大的诱惑。
(6).ImageMagick 函数运行较慢, OpenCV 运行速度较快。常见函数 ,包括:图像读、图像压缩、图像写等 ,OpenCV 都要比 ImageMagick 快很多。
(7).OpenCV 不能解析 gif 文件格式,版权原因,试图载入 gif 文件会出错。若要用 OpenCV 功能,又需解析 gif 文件格式,可先用其他函数库将其读入再转化为 IplImage。ImageMagick 支持处理 gif 文件格式。
(8).ImageMagick 有一个不错的 sharpen 函数,用于锐化图像,效果挺不错。OpenCV 中没有锐化函数,没有相应的锐化算法实现。若确想使用这个函数,可在 OpenCV 下实现 ImageMagick 相应源代码。
OpenCV 功能强大,代码运行速度快,更新速度也快,但对开发者有一定的要求。ImageMagick 使用比较简单,对图像处理不太熟悉,又只想实现简单图像处理时,可选择。
若选择使用 ImageMagick,建议使用 GraphicsMagick。GraphicsMagick 和 ImageMagick 的函数调用方法相同,但 GraphicsMagick 在效率上优于 ImageMagick,特别是在 windows 下运行。
GraphicsMagick 比较 ImageMagick:
(1).GraphicsMagick 更有效率,能更快的完成处理工作;
(2).GraphicsMagick 更小更容易安装;
(3).GraphicsMagick 已被 Flickr (雅虎旗下图片分享网站) 和 Etsy (网络商店平台) 使用,每天处理百万计的图片;
(4).GraphicsMagick 和已安装软件不会发生冲突;
(5).GraphicsMagick 几乎没有安全问题;
(6).GraphicsMagick 的手册非常丰富;