Facilidad de uso
Matlab es un lenguaje relativamente fácil de manejar. Matlab es un lenguaje de secuencias de comandos de alto nivel, lo que significa que no tiene que preocuparse por las bibliotecas, declarar variables, gestión de memoria u otros problemas de programación de nivel inferior. Como tal, puede ser muy fácil crear un código para crear un prototipo de su idea de procesamiento de imágenes. Digamos, por ejemplo, que quiero leer una imagen del archivo y mostrarla. En Matlab, crearía un nuevo archivo de matlab llamado test.m y en él escribiría esto como:
I = imread (‘springbreak.jpg’);
mostrar (I)
Fácil, verdad? Ahora, si quisiera hacer lo mismo con OpenCV, crearía un archivo test.c y (si lo escribiera en c) se vería así:
#include “cv.h” // encabezado principal de OpenCV
#include “highgui.h” // encabezado GUI
- ¿Cuál es el mejor libro para comprender la mecánica de fluidos?
- ¿Cuál es la mejor película que has visto? ¿Qué es una película que has visto muchas veces pero sabes que la volverás a ver en el futuro?
- ¿Cuál es el mejor recortador de barba?
- ¿Cuáles son los mejores lugares para visitar cerca de Hyderabad durante el fin de semana?
- ¿Cuáles son las estrategias más viables para convertirse en el mejor en alguna profesión?
int main () {
// declara un nuevo puntero IplImage
IplImage * myimage;
// cargar una imagen
myimage = cvLoadImage (“springbreak.jpg”, 1); // cambia el nombre del archivo a tu propia imagen
// crea una nueva ventana y muestra la imagen
cvNamedWindow (“Sonrisa”, 1);
cvShowImage (“Sonrisa”, mi imagen);
// espera a que la llave cierre la ventana
cvWaitKey (0);
cvDestroyWindow (“Sonrisa”);
cvReleaseImage (& myimage);
devuelve 0;
}
Woha De acuerdo, podríamos salir con un poco menos de líneas de lo que mostramos aquí, pero todavía hay muchas más líneas de código para hacer lo mismo que en Matlab. Gran parte de estas líneas adicionales consisten en un “código de limpieza” que se convertirá en una segunda naturaleza para que escriba, ya que es muy similar entre todos los proyectos. Sin embargo, esto significa que OpenCV tiene una curva de aprendizaje más alta.
Índice de barba del cuello:
Matlab 9/10
OpenCV 3/10
-Matlab es un lenguaje mucho más fácil de manejar.
Velocidad
Matlab es un lenguaje de secuencias de comandos de alto nivel, lo que significa que no tiene que preocuparse por la administración de memoria u otros problemas de programación de bajo nivel. Sin embargo, esto se debe al hecho de que Matlab se basa en Java y Java se basa en C. Entonces, cuando ejecuta un programa de Matlab, su computadora está ocupada tratando de interpretar todo ese código de Matlab. Luego lo convierte en Java, y finalmente ejecuta el código.
OpenCV es básicamente una biblioteca de funciones escritas en C. Usted está más cerca de proporcionar directamente el código de lenguaje de máquina a la computadora para que se ejecute. Entonces, en última instancia, obtiene más procesamiento de imágenes para los ciclos de procesamiento de sus computadoras, y no más interpretación. Como resultado de esto, los programas escritos en OpenCV se ejecutan mucho más rápido que los programas similares escritos en Matlab. Por ejemplo, podríamos escribir un pequeño programa para detectar sonrisas en una secuencia de cuadros de video. En Matlab, típicamente obtendríamos 3-4 cuadros analizados por segundo. En OpenCV, obtendríamos al menos 30 fps, lo que daría como resultado una detección en tiempo real. Esto hace que OpenCV sea mucho mejor en la demostración de programas prototipo utilizando una PC estándar y una cámara web, por ejemplo.
Índice de barba del cuello:
Matlab 2/10
OpenCV 9/10
-La velocidad de OpenCV limpia el piso con Matlab, y hace que sus demostraciones de video en tiempo real sean más impresionantes para presumir ante sus compañeros.
Recursos necesitados
Estrechamente relacionado con la velocidad, los recursos utilizados por ambos entornos de programación deben considerarse. El procesamiento de imágenes y videos en su naturaleza puede requerir muchos recursos debido a la cantidad de píxeles en cada imagen. Sin embargo, hay una gran brecha en la escala de recursos entre Matlab vs OpenCV. Debido a la naturaleza de alto nivel de Matlab, es un cerdo de recursos. Hemos tenido un código de Matlab que ha requerido más de un concierto de RAM para ejecutar el video. En comparación, nuestros programas OpenCV típicos solo requieren ~ 70mb de RAM para ejecutarse en tiempo real (suponiendo que su código no tenga “fugas”, consulte “Administración de memoria” a continuación). Del mismo modo, una instalación completa de Matlab más todas las cajas de herramientas ocupará un par de conciertos en su computadora. En comparación, OpenCV solo requiere un concierto como máximo.
Índice de barba del cuello:
Matlab 4/10
OpenCV 9/10
-OpenCV se ejecutará felizmente en su vieja PC de escritorio. Matlab podría ser una buena excusa para comprar esa nueva PC.
Costo
El precio de lista para la base (sin cajas de herramientas) MATLAB (licencia comercial, de usuario único) es de alrededor de € 1500 euros (1,20,000 INR). OpenCV (licencia BSD) es gratis.
Nuff ‘dijo.
Índice de barba del cuello:
Matlab 4/10
OpenCV 10/10
-No obtendrás mucho mejor que gratis.
Entorno de desarrollo
Matlab viene con su propio entorno de desarrollo, que se muestra a continuación.
Como el entorno de desarrollo de Matlab se basa en Java, Mathworks ha realizado versiones de su IDE (entorno de desarrollo integrado) para Windows, Linux y OSX. Como tal, cuando instala Matlab, esencialmente está instalando el entorno de programación y el IDE también. Hemos encontrado que el entorno de desarrollo de Matlab en Windows y Ubuntu es un asunto muy bien diseñado. Sin embargo, en Apple OSX, puede ser algo incómodo de usar debido a su soporte no nativo de cacao y al uso de X11 en su lugar.
Para OpenCV, no hay ningún IDE particular que deba usar. En cambio, puede elegir cualquier IDE de programación en C dependiendo de si está utilizando Windows, Linux u OS X. Para Windows, Microsoft Visual Studio o NetBeans es el IDE típico utilizado para OpenCV. En Linux, su Eclipse o NetBeans, y en OSX, utilizamos Apples Xcode (que se muestra a continuación).
Para instalar OpenCV con su IDE de elección en una plataforma en particular, deberá seguir una guía de diversa complejidad. Estamos contentos con el uso de varios IDEs para OpenCV, pero debido al IDE exclusivo de Mathworks para Matlab y su capacidad multiplataforma, Matlab envía OpenCV a la publicación aquí.
Índice de barba del cuello:
Matlab 8/10
OpenCV 6/10
– Ya sea Netbeans o Eclipse o Visual Studio, muchos desarrolladores tienen su IDE favorito para OpenCV. Sin embargo, debido a su exclusividad para el lenguaje de programación Matlab y, por lo tanto, a la falta de complejidad para configurarlo, el IDE de Mathworks gana aquí.
Gestión de la memoria
OpenCV se basa en C. Como tal, cada vez que asignes un fragmento de memoria tendrás que liberarlo nuevamente. Si tiene un bucle en su código donde asigna un trozo de memoria en ese bucle y olvida liberarlo después, obtendrá lo que se llama una “fuga”. Aquí es donde el programa usará una cantidad creciente de memoria hasta que se bloquee sin memoria restante. Debido a la naturaleza de alto nivel de Matlab, es lo suficientemente “inteligente” como para asignar y liberar memoria automáticamente en segundo plano. Hemos encontrado que la administración de memoria de Matlabs es bastante buena, lo que se demuestra por el hecho de que hemos ejecutado programas de análisis de video durante días y solo hemos tenido un pequeño aumento en la huella de memoria general. Aunque la huella de memoria general de OpenCV es muy pequeña para empezar, en comparación, cuando tiene una pérdida de memoria, puede escalar a una gran cantidad, lo que resulta en mucho esfuerzo al tratar de rastrearlo.
Índice de barba del cuello:
Matlab 9/10
OpenCV 4/10
-La gestión de memoria de Matlab es bastante buena. A menos que tenga cuidado con su asignación y liberación de memoria OpenCV, aún puede sentirse frustrado más allá de lo imaginable.
Portabilidad
Tanto Matlab como el entorno de desarrollo OpenCV se pueden instalar y ejecutar en Linux, Windows y OS X. En nuestra experiencia, hemos tenido pocos problemas con los programas OpenCV y Matlab desarrollados en una plataforma y ejecutándolos en otra plataforma. En algunos casos, los encabezados pueden tener que cambiarse en OpenCV, o pueden usarse diferentes códecs para leer y escribir videos en Matlab. Para la ventaja de OpenCV, los puertos se han escrito para muchas plataformas adicionales: aquí en Fixational hemos tenido OpenCV ejecutándose en todo, desde The Cloud (instancias de Amazon EC2) hasta dispositivos integrados como iPod de Apple. Esto reduce la barrera de una etapa de creación de prototipos de programas a la etapa final de incrustarlo en un dispositivo para aplicaciones de video en tiempo real.
Índice de barba del cuello:
Matlab 3/10
OpenCV 8/10
-Si puede ejecutar C, hay muchas posibilidades de que ejecute OpenCV.
Desarrollo de habilidades útiles de programación.
Tanto Matlab como OpenCV son excelentes lenguajes de programación para desarrollar habilidades de procesamiento de imágenes. Sin embargo, como OpenCV está escrito en C, es una excelente manera de desarrollar simultáneamente habilidades de programación en C. Esto puede ser bueno si necesita desarrollar programas en C para otras aplicaciones, o incluso como un buen punto de partida si desea aprender Java o C ++, por ejemplo. Como los programas OpenCV se pueden escribir utilizando los IDE comunes, como Netbeans, Xcode o Eclipse, también es una excelente manera de familiarizarse con ellos para otras aplicaciones de programación que comparten los mismos IDE.
Índice de barba del cuello:
Matlab 3/10
OpenCV 8/10
-Aunque hay una curva de aprendizaje alta con el aprendizaje de OpenCV en comparación con Matlab, las habilidades aprendidas en OpenCV pueden ser más útiles.
Depuración
Muchas de las operaciones de depuración estándar se pueden usar tanto con Matlab como con OpenCV: se pueden agregar puntos de interrupción al código, se puede pasar por la ejecución de líneas, se pueden ver valores variables durante la ejecución del código, etc. Sin embargo, Matlab ofrece una serie de depuración adicional opciones sobre OpenCV. Una gran característica es que si necesita ver rápidamente la salida de una línea de código, se puede omitir el punto y coma al final. Además, como Matlab es un lenguaje de secuencias de comandos, cuando la ejecución se detiene en una línea en particular, el usuario puede escribir y ejecutar sus propias líneas de código sobre la marcha y ver el resultado resultante sin tener que volver a compilar y vincular nuevamente. A esto se suman las poderosas funciones de Matlabs para mostrar datos e imágenes, lo que hace que Matlab sea nuestra elección para el entorno de desarrollo más fácil para la depuración de código.
Índice de barba del cuello:
Matlab 9/10
OpenCV 5/10
-Como Matlab es un lenguaje de script, ofrece muchas características de depuración adicionales sobre OpenCV.
Ayuda y código de muestra
Matlab presenta una sección de ayuda muy concisa e informativa en su IDE. Aquí se describe cada función y su uso, junto con algunos códigos de muestra que demuestran su uso. Las funciones estándar de procesamiento de imágenes están disponibles junto con varios de los métodos de procesamiento de imágenes más nuevos incluidos en las diversas cajas de herramientas. Algunas funciones adicionales y programas de muestra están disponibles en los blogs en línea, y la mayoría reside en el sitio web de Mathworks “Matlab Central”. Como ha pagado por el software, también es útil contar con un representante de Mathworks en el teléfono para llamar por ayuda cuando haya problemas con el software.
Para descubrir qué funciones hacen qué en OpenCV, se requiere una búsqueda en línea no tan fácil de usar para obtener la información necesaria. Sin embargo, un gran beneficio para OpenCV es la gran cantidad de código de muestra disponible en línea. Cuando se desarrolla un nuevo método de procesamiento de imágenes, no pasa mucho tiempo antes de que alguien en algún lugar haga que una implementación en OpenCV esté disponible en línea para descargar.
Índice de barba del cuello:
Matlab 8/10
OpenCV 9/10
-Matlab tiene una gran sección de ayuda en su IDE. Sin embargo, OpenCV tiene una mayor cantidad de funciones de procesamiento de imágenes disponibles en línea.
Conclusión De los puntajes finales podemos ver que OpenCV tiene la ventaja sobre Matlab para el desarrollo de procesamiento de imagen y video. Aunque Matlab tiene una curva de aprendizaje fácil, gestión de memoria integrada, una gran sección de ayuda, es muy lento para ejecutar el código y es costoso para comenzar. Si bien OpenCV puede ser difícil de depurar y requiere mucho “código de tareas domésticas” necesario para gestión de memoria, archivos de encabezado, etc., gana debido a su costo gratuito, la magnitud del código de muestra disponible en Internet, la corta ruta de desarrollo desde el código prototipo hasta el código incrustado, las habilidades de programación útiles aprendidas de su uso y su velocidad súper rápida Matlab es un lenguaje de programación más “genérico” ya que fue diseñado para muchos usos, demostrado por sus numerosas cajas de herramientas que van desde herramientas financieras hasta especializadas en análisis de ADN. Por otro lado, OpenCV fue hecho para el procesamiento de imágenes. Cada función y estructura de datos se diseñó teniendo en cuenta el codificador de procesamiento de imágenes.
Como tal, si es nuevo en el área completa de procesamiento de imágenes y videos o está buscando hacer un cambio en su entorno de programación, le recomendamos que comience en OpenCV.