快速跨平台 C/C++ 图像处理库

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/796364/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 17:19:30  来源:igfitidea点击:

Fast Cross-Platform C/C++ Image Processing Libraries

c++cimage-processingcross-platformperformance

提问by The Unknown

What are some cross platform and high performance image libraries for image processing (resizing and finding the color/hue histograms). No gui needed. This is for C/C++.

有哪些用于图像处理的跨平台和高性能图像库(调整大小和查找颜色/色调直方图)。不需要gui。这是针对 C/C++ 的。

So far I have looked in to

到目前为止,我已经看过

  • OpenCV
  • GIL as part of Boost
  • DevIL
  • CImg
  • OpenCV
  • GIL 作为 Boost 的一部分
  • 魔鬼
  • 氯化镁

My questions

我的问题

  • How's the performance of the ones I have listed above
  • What are some other libraries
  • 我上面列出的那些的性能如何
  • 什么是其他图书馆

Your input much appreciated.

非常感谢您的意见。

采纳答案by Dani van der Meer

OpenCVhas quite good performance. It should be sufficient for most cases.

OpenCV具有相当好的性能。对于大多数情况,它应该足够了。

To improve performance, you can also use OpenCV together with Intel IPP, which is however a non-free commercial product. If OpenCV detects that IPP is installed it will use it where possible.

为了提高性能,您还可以将 OpenCV 与Intel IPP一起使用,但它是一种非免费的商业产品。如果 OpenCV 检测到 IPP 已安装,它将在可能的情况下使用它。

As a third option you can use IPP directly. IPP was designed with high performance (on Intel architectures) as a goal. It is optimized to use the intel SIMD instructions.

作为第三种选择,您可以直接使用 IPP。IPP 的设计目标是高性能(在英特尔架构上)。它被优化为使用英特尔 SIMD 指令。

回答by CiNN

imagemagickis quite popular.

imagemagick很受欢迎。

回答by Johann Gerell

Don't forget to look at CxImage- I've used it professionally in globally deployed graphics intensive mobile phone applications, where it performed perfectly and it's so full of features. Do check it out!

别忘了看看CxImage- 我已经在全球部署的图形密集型移动电话应用程序中专业地使用它,在那里它表现完美并且功能如此丰富。一定要检查一下!

回答by ErmIg

There is a simple and free open source cross-platform image processing library Simd. As follows from its description:

有一个简单且免费的开源跨平台图像处理库Simd。从其描述如下:

It provides many useful high performance algorithms for image processing such as: pixel format conversion, image scaling and filtration, extraction of statistic information from images, motion detection.

它为图像处理提供了许多有用的高性能算法,例如:像素格式转换、图像缩放和过滤、从图像中提取统计信息、运动检测。

The algorithms are optimized with using of different SIMD CPU extensions: SSE, SSE2, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX-512 for x86/x64, VMX(Altivec) and VSX(Power7) for PowerPC, NEON for ARM.

这些算法使用不同的 SIMD CPU 扩展进行了优化:SSE、SSE2、SSSE3、SSE4.1、SSE4.2、AVX、AVX2 和 AVX-512(用于 x86/x64,VMX(Altivec)和 VSX(Power7)用于 PowerPC, ARM 的霓虹灯。

回答by Darien Pardinas

I don't think I've seen anything better in features and performance than HALCON from MVTec. It provides all sort computer vision and image processing algorithms out-of-the-box and plenty of real life examples. The library uses multithreading as much as algorithms could possibly allow and GPU when available. It's very cross-platform and provides a fantastic IDE that will allow you to export your prototype code (algorithm) to many languages including C, C++, C# and more.

我认为我在功能和性能方面没有看到比MVTec 的HALCON 更好的东西。它提供了各种开箱即用的计算机视觉和图像处理算法以及大量现实生活中的例子。该库尽可能多地使用多线程算法和 GPU(如果可用)。它是非常跨平台的,并提供了一个出色的 IDE,允许您将原型代码(算法)导出为多种语言,包括 C、C++、C# 等。

One of the best features of this library is how they treat region objects. It is just incredibly smart and efficient both for storage and mask processing. Unfortunately OpenCV has a lot to learn from it.

该库的最佳功能之一是它们如何处理区域对象。它在存储和掩模处理方面都非常智能和高效。不幸的是,OpenCV 有很多东西要从中学习。

The main problem with this package is the price (stupidly high) but if you are working on a project where you don't need to deploy runtime licenses (e.g. SaaS) then this is the way to go, look no further if you require serious image processing and computer vision.

这个包的主要问题是价格(高得离谱),但如果你正在开发一个不需要部署运行时许可证(例如 SaaS)的项目,那么这就是要走的路,如果你需要认真图像处理和计算机视觉。

回答by RBerteig

You might want to look at IM. It builds on several platforms, and has support for (modular) image file formats, a variety of image representations, and a wide array of transformations and operators. A GUI tool, IMLab, for demonstrating image processing operators based on the IM library is also available.

你可能想看看IM。它构建在多个平台上,并支持(模块化)图像文件格式、各种图像表示以及各种转换和运算符。还提供了一个 GUI 工具IMLab,用于演示基于 IM 库的图像处理操作符。

回答by mem64k

There are also VTKand ITK, with a huge amount of manifold image processing algorithms.

还有VTKITK,有大量的流形图像处理算法。

回答by mloskot

There are also:

还有:

回答by Biga

ExactImageis a fast C++ image processing library. Unlike many other library frameworks it allows operation in several color spaces and bit depths natively, resulting in low memory and computational requirements.

ExactImage是一个快速的 C++ 图像处理库。与许多其他库框架不同,它允许在多个颜色空间和位深度中进行本机操作,从而降低内存和计算需求。

回答by jcupitt

I help maintain libvips, a free, cross-platform C/C++ scientific image-processing library. It is fast and works well on very large images.

我帮助维护libvips,这是一个免费的跨平台 C/C++ 科学图像处理库。它速度很快并且在非常大的图像上运行良好。

I did a very simple benchmark: load a 5,000 x 5,000 pixel RGB tif, crop 100 pixels off every edge, shrink 10%, sharpen, and save again. On this trivial test at least, vips is more than twice as fast as anything else I've tried.

我做了一个非常简单的基准测试:加载一个 5,000 x 5,000 像素的 RGB tif,每边裁剪 100 个像素,缩小 10%,锐化,然后再次保存。至少在这个微不足道的测试中,vips 的速度是我尝试过的其他任何东西的两倍多。