it-swarm-es.com

¿Cuál es la mejor biblioteca para visión por computadora en C / C ++?

¿De qué bibliotecas debo elegir cuando trabajo con Computer Vision en C/C++?

Me doy cuenta de que Google tiene muchos buenos resultados, pero tal vez hay excelentes bibliotecas que se perdieron.

24
eMilk

Usamos OpenCV extensamente donde trabajo.

Proporciona un conjunto completo de excelentes herramientas de procesamiento de visión. Recomiendo leer el wiki para obtener una explicación más detallada y una mejor explicación escrita de lo que daría.

36
scubabbl

OpenCV es muy popular, y sin duda es bueno, pero si te tomas en serio C++ y te gustan los contenedores tipo STL, que también son muy rápidos, vale la pena considerarlo:

libCVD

http://savannah.nongnu.org/projects/libcvd

Proyecto Inicio http://www.edwardrosten.com/cvd/index.html

git: http://git.savannah.gnu.org/cgit/libcvd.git

Cambridge Video Dynamics: biblioteca de imágenes, captura de video, visualización, visión por computadora y más. Se integra bien con TooN para un marco de álgebra lineal. Lenguaje: C++

Esto se desarrolla activamente y tiene muchas características y algoritmos útiles, y en general esos tipos hacen que las cosas funcionen muy rápido.

Es LGPL.

Es posible compilarlo en Win, Linux y MacOS X.

También existe la intención de proporcionar un puerto para Python con este, para permitir prototipos de algoritmos de Computer Vision con Python y SciPy muy rápido (no estoy seguro) en qué etapa está ahora, pero había un documento al respecto en una conferencia Python).

Si está intentando hacer algo en tiempo real, debería considerar seriamente libCVD.

Por ejemplo, el marco PTAM (seguimiento y mapeo paralelo) de Georg Klein utiliza esta biblioteca.

11
Denis C

OpenCV es bastante maduro y cubre la mayoría de las áreas de visión por computadora.

6
Tuppa

Para la visión artificial industrial, las posibles opciones son:

También hay bibliotecas más especializadas para visión artificial integrada, p. Ej. Vision Components 'VCLib y para tareas específicas, p. Ej. para el reconocimiento de matriz de datos hay libdmtx .

4
Michal Czardybon

Me resultaría difícil darle una respuesta técnica sobre cuál es mejor, puedo decirle que tenemos una variedad de doctorados trabajando en varios problemas de visión por computadora para el trabajo y todos usan y recomiendan OpenCV.

3
scubabbl

Puede haber estado implícito, pero la pregunta original no especificaba que las bibliotecas fueran FOSS. Dos bibliotecas comerciales líderes son:

Ambos admiten C++ y ofrecen pruebas gratuitas de 30 días.

3
hortman

Los Intel Performance Primitives son bastante populares en el campo de la visión por computadora.

3
geschema

Tengo mala experiencia con la biblioteca de imágenes Matrox. No lo recomiendo porque:

  1. No está orientado a objetos, dificulta el mantenimiento y soluciona problemas/depura los códigos.

  2. Mala documentación/manual de ayuda, las explicaciones son poco claras/incompletas y carecen de ejemplos de codificación. Por ejemplo, mezclar el uso de diez funciones diferentes en una breve muestra de codificación.

  3. Si se usa en un entorno .NET (C #), matrox crea objetos administrados cuya memoria debe liberarse manualmente después de su uso.

  4. Caro. Además de la licencia de desarrollador, necesita comprar licencias de tiempo de ejecución para todos sus clientes.

  5. Formato de licencia incorrecto: utilice la llave de llave USB. Si perdió el dongle, perdió su licencia.

2
BillyGater50B

Si tuviera que comparar OpenCV con openFrameworks, ¿cómo funcionaría? ¿Cuál es mejor en qué, y así sucesivamente?

como dije anteriormente, OF usa opencv, (proporcionando un contenedor). No son diferentes Intentamos proporcionar una interacción simple.

1
zach

Muchas personas han recomendado OpenCV, que es bastante bueno (he probado los envoltorios python, que está bien para la creación rápida de prototipos). También te recomendamos echar un vistazo a gpuCV que utiliza las ventajas del paralelismo masivo en las GPU para visión por computadora. Su API es muy similar a la que tiene OpenCV (en su mayoría compatible) y oculta toda la programación de GPU del usuario/desarrollador.

1
hannson

openframeworks usa opencv y le proporciona un contenedor,

por ejemplo, este código son clases que lo ayudan a usar opencv de una manera fácil:

http://svn.openframeworks.cc/browser/listing.php?repname=addons&path=%2FofxOpenCv%2Ftrunk%2FofxOpenCv%2Fsrc%2F#_ofxOpenCv_trunk_ofxOpenCv_src_

no son bibliotecas diferentes.

1
zach

Aunque OpenCV es probablemente el más utilizado, vale la pena mirar un par de otros:

http://cimg.sourceforge.net/ es una biblioteca muy similar a STL, muy templada. Está contenido en un solo encabezado y el diseño de retorno por referencia significa que puede encadenar un montón de operaciones en una sola declaración. Está respaldado por INRIA (laboratorio de investigación nacional francés)

http://vxl.sourceforge.net/ es muy similar a OpenCV pero tiene un diseño más C++. Mucho más como la nueva versión OpenCV2.0 c ++.

1
Martin Beckett

Si está utilizando OpenCV, consulte también http://camellia.sourceforge.net/ (reimplementando varias funciones de IPP).

0
Cfr

OpenCV es probablemente el más famoso y extremadamente maduro. Pero ha habido un cambio reciente a los sistemas basados ​​en CUDA debido a los beneficios de rendimiento, http://www.nvidia.com/object/cuda_home.html#

También para lenguajes más seguros como C #, el framework Aforge .NET es bastante bueno,

0
Egon