什么是C / C ++中最好的计算机视觉库?
在C / C ++中使用Computer Vision时,我需要选择哪些库?
我意识到谷歌有很多好的结果,但也许有很棒的图书馆,它错过了。
我在工作的地方广泛使用OpenCV 。
它提供了一整套优秀的视觉处理工具。 我建议通过维基阅读更详细的解释和更好的书面解释,我将给予。
OpenCV非常受欢迎,毫无疑问它很好,但是如果你认真对待C ++并且喜欢类似STL的容器,它们也非常快,那么值得考虑:
libCVD
http://savannah.nongnu.org/projects/libcvd
项目主页http://www.edwardrosten.com/cvd/index.html
git: http : //git.savannah.gnu.org/cgit/libcvd.git
剑桥video动力学 – 用于图像,video捕捉,显示,计算机视觉等的图书馆。 与TooN很好地集成,用于线性代数框架。 语言:C ++
这是积极开发的,并且具有许多有用的function和算法,并且通常这些人可以非常快速地工作。
这是LGPL。
可以在Win,Linux和MacOS X上编译它。
还有一个用Python提供端口的意图,允许用Python和SciPy快速构建计算机视觉算法原型(我不确定它现在在哪个阶段,但在Python会议上有一篇关于它的论文。)
如果你想要实时做任何事情,你应该认真考虑libCVD。
例如,Georg Klein的PTAM(并行跟踪和映射)框架使用此库。
OpenCV非常成熟,涵盖了计算机视觉的大部分领域。
对于工业机器视觉,可能的选择是:
- 哈尔康
- Matrox成像库
- 打开eVision
- 自适应视觉库
- Common Vision Blox
还有更专业的嵌入式机器视觉库 – 例如Vision Components的VCLib和特定任务 – 例如,对于数据矩阵识别,有libdmtx 。
我会很难给你一个关于哪个更好的技术答案,我可以告诉你我们有各种各样的博士研究工作的各种计算机视觉问题,他们都使用和推荐OpenCV。
这可能是隐含的,但原始问题没有指明图书馆是FOSS。 两个领先的商业图书馆是:
- Matrox的Matrox成像库
- 来自NI的NI Vision
两者都支持C ++并提供30天的免费试用。
英特尔性能基元在计算机视觉领域非常流行。
我对Matrox Imaging Library有不好的经验。 不推荐它,因为:
-
不面向对象,使代码更难以维护和排除故障/调试。
-
错误的文档/帮助手册,解释不清楚/不完整和缺乏编码示例。 例如,在一个短编码样本中混合使用十种不同的函数。
-
如果在.NET(C#)环境中使用,matrox会创建托管对象,使用后需要手动释放内存。
-
挺高的。 除开发者许可证外,还需要为其所有客户购买运行时许可证。
-
许可证格式错误 – 使用usb加密狗密钥。 如果您丢失了加密狗,则会丢失许可证。
openframeworks使用opencv并为它提供包装器,
例如,此代码是帮助您以简单方式使用opencv的类:
他们不是不同的图书馆。
如果我将OpenCV与openFrameworks进行比较 – 那将如何解决? 哪个更好>什么,等等?
正如我上面所说,OF使用opencv,(提供一个包装器)。 他们并没有什么不同。 我们试图提供一个简单的interace。
很多人都推荐OpenCV,这是非常好的(我已经尝试过python包装器,可以快速进行原型设计)。 您可能还想查看使用GPU中的大规模并行性优势的gpuCV用于计算机视觉。 它的API与OpenCV非常相似(主要是兼容的),并隐藏了用户/开发人员的所有GPU编程。
虽然OpenCV可能是使用最广泛的,但其他几个可能值得关注:
http://cimg.sourceforge.net/是一个非常STL,高度模板化的库。 它包含在单个头文件中,返回引用设计意味着您可以在一个语句中将一堆操作链接在一起。 它得到了INRIA(法国国家研究实验室)的支持
http://vxl.sourceforge.net/与OpenCV非常相似,但有更多的C ++设计。 更像是新的OpenCV2.0 c ++版本。
OpenCV可能是最着名和最成熟的。 但由于性能优势,最近已转向基于CUDA的系统, http://www.nvidia.com/object/cuda_home.html#
对于像C#这样更安全的语言,Aforge .NET框架也相当不错,
如果您使用的是OpenCV,请参阅http://camellia.sourceforge.net/ (重新实现几个IPPfunction)。