buena Básicamente hay dos opciones: OpenCV y FastCV
OpenCV es una biblioteca más maduro con mucha más funcionalidad que FastCV. Para muchas tareas de visión por computadora, puede encontrar solo la funcionalidad más básica en FastCV, mientras que puede tener casi todas las alternativas populares disponibles en OpenCV. Compruebe los detectores de funciones disponibles, por ejemplo. OpenCV tiene Harris, SURF, SIFT, FAST, etc. FastCV, por otro lado, solo tiene Harris y FAST. OpenCV contiene optimizaciones de hardware para diferentes HW, incluidas las computadoras de escritorio y los dispositivos informáticos móviles. La posibilidad de utilizar OpenCV en el escritorio le proporciona una opción de desarrollo más flexible, ya que puede ajustar y probar el código en una computadora de escritorio rápida antes de comenzar a trabajar en el desarrollo móvil. También OpenCV se considera como parte de a Khronos Computer Vision Group Proposal. Entonces, si esto se aprueba, OpenCV puede convertirse en la API estándar para visión artificial. Por lo que puedo ver, FastCV proporciona optimizaciones superiores para las CPU de Snapdragon. Esto podría jugar un papel importante en la decisión a corto plazo, pero estoy seguro de que OpenCV cerrará la brecha muy rápido, si es que hay alguno.
Si elige la ruta de OpenCV, entonces hay dos subrutas: OpenCV con Android NDK contra JavaCV con Android SDK. JavaCV es un contenedor de OpenCV basado en JavaCpp. JavaCV principalmente envuelve C API, aunque OpenCV también proporciona una API C++ orientada a objetos. La API de C++ maneja la liberación de la memoria no utilizada automáticamente, por ejemplo. Sin embargo, la API C (por lo tanto, JavaCV) requiere que manejes la liberación de imágenes no usadas manualmente. Además, cuando te enfrentas a un problema en JavaCV, es difícil abordar el problema, porque hay demasiados indirectos para verificar. Los problemas son más fáciles de localizar cuando usa OpenCV directamente. Sin embargo, en el caso de Android, la dificultad añadida de NDK no debe olvidarse.
Si está disponible la funcionalidad de OpenCV para la aplicación específica, y no se necesita un código de procesamiento de nivel de píxel personalizado, JavaCV es el camino a seguir. Sin embargo, si se requiere una cantidad considerable de código de procesamiento de imágenes personalizado, el código de Java lo ralentizará, y tendrá que cambiar a NDK, de todos modos. En este último caso, OpenCV es la alternativa para elegir.
Alguien más trabajó en un proyecto similar antes: http: //www.cs.brown.edu/courses/csci1290/results/final/sbnguyen/ –
@SamuelAudet deberías poner eso como respuesta oficial para que yo pueda representarlo! :) – Peter
@SamuelAudet ahora mirándolo Parece que la información en el enlace está desactualizada. – Peter