Entradas

Mostrando entradas de 2014

File Chooser JavaFX (Abrir Archivos)

Imagen
File Chooser es un control utilizado por los usuarios para navegar por el sistema de archivos de nuestra PC, nos permite buscar o guardar un archivo en la carpeta deseada, además nos permite agregar filtros de búsquedas que facilitan y hacen más rápido el encontrar un determinado tipo de archivo.

Controles y Contenedores JavaFX 8 - I

Imagen
Javafx cuenta con gran cantidad de controles que podemos usar en el diseño de la interfaz gráfica de usuario correspondiente, además tenemos la posibilidad de personalizar los controles ya existentes, descargar paquetes de controles de terceros o diseñar nuestros propios controles; En esta sección veremos los controles de uso común y algunos paneles contenedores que nos facilitan la ubicación y organización de los mismos.

Spring Boot - Introducción

Imagen
Spring Boot es un sub-proyecto de Spring, el mismo busca facilitarnos la creación de proyectos con framework Spring eliminando la necesidad de crear largos archivos de configuración xml, Spring Boot provee configuraciones por defecto para Spring y otra gran cantidad de librerías, además provee un modelo de programación parecido a las aplicaciones java tradicionales que se inician en el método main.
Creación de un proyecto
Para crear nuestro primer proyecto nos apoyaremos con el IDE Netbeans 8.0, el uso del mismo no es obligatorio, siempre podemos seguir el tutorial con otros IDE como Eclipse o IntelliJ siempre que tengan los plugin necesarios habilitados. Como herramienta de construcción usaremos Maven 3, al igual que con los IDE también podemos elegir la herramienta que deseemos como Gradle o Ant, elegimos usar Netbeans 8.0 o superior pues ya cuenta con todo lo necesario, requerimos de conexión a internet para que Maven administre las correspondientes dependencias. Abrimos Netbeans y cre…

ANPR Tesseract–OpenCV

Imagen
Un ANPR (Automatic Number Plate Recognition) es un sistema automatizado para el reconocimiento de matriculas de automóviles, el reconocimiento de matriculas de vehículos es uno de las aplicaciones que podemos construir con opencv, nos apoyaremos en las librería tesseract-ocr para el reconocimiento de la matricula mientras opencv proveerá las funciones de detección de la misma.

JavaFx 8 Administrar ventanas

Imagen
En este tutorial veremos como podemos administrar varias ventanas creadas con JavaFX API, crearemos las ventanas a partir de un archivo .fxml y veremos las diferentes propiedades que podemos modificar para manipular la apariencia y comportamiento de nuestra aplicación JavaFX 8, sin mas, manos a la obra.

Introducción a JavaFx 8

Imagen
Java FX es una tecnología que nos permite la creación  de interfaces gráficas de usuario enriquecidas con estilos CSS, nos facilita la separación entre diseño y código de programación, es una API desarrollada enteramente en Java, la misma aprovecha el hardware gráfico GPU para aumentar el rendimiento y la calidad de los diseños, además esta diseñada para ejecutarse en diversas plataformas como celulares, tabletas y computadoras de escritorio. 

Buscar y Abrir Archivos (JFileChooser - Java)

Imagen
En ocasiones requerimos que el usuario de la aplicación busque y abra un archivo que se encuentra en su pc, para este caso tenemos el cuadro de dialogo JFileChooser de la API de Java, el mismo muestra un cuadro de búsqueda donde se puede buscar y seleccionar el o los archivos deseados de manera cómoda para el usuario y para el programador de la aplicación. 

Construir Qt-5 para Visual Studio

Imagen
Qt es una librería libre que podemos usar para crear interfaces graficas de usuario (GUI) multiplataforma para sistemas como Windows, Linux y Mac OS, además posee muchas otras funcionalidades que podemos aprovechar, aunque podemos instalar de manera sencilla Qt IDE, si en algún momento necesitamos solo las librerías para un proyecto Visual C++ veamos los siguiente.

Generar Tablas LR para Análisis Sintáctico

Imagen
Las gramáticas LR nos permiten construir analizadores sintácticos para la gran mayoría de los lenguajes de programación que conocemos en la actualidad, en el proceso de creación de analizadores sintácticos de desplazamiento-reducción, como también son llamados, la parte mas difícil es la creación de las tablas, por lo que estudiaremos los algoritmos para la creación de las mismas y crearemos un programa que las genere automáticamente.

Compilar VTK con CMake

Imagen
VTK (Visualization Toolkit) es una librería de código abierto diseñada para el procesamiento de imágenes, gráficos 3D, entre otros, VTK incluye gran cantidad de algoritmos y además aprovecha la aceleración por hardware, puede ser utilizada en lenguajes como C/C++, Java, Python, VTK es multiplataforma corre en sistemas operativos UNIX, Windows y Mac OS X 10.5.  

Compilar OpenCV con CMake para CodeBlocks

Imagen
CMake es un sistema de construcción automatizado nos permite generar proyectos que pueden ser abiertos por distintas plataformas de desarrollo, como un ejemplo práctico veremos como construir opencv para el IDE CodeBlocks con el compilador MinGW, esto nos servirá como una introducción a la compilación de opencv ya que en el tutorial siguiente construiremos opencv y habilitaremos todas las funcionalidades del mismo para aprovechar al máximo el poder de opencv.

Conversión de Python 2.x a Python 3.x

Como sabemos la nueva versión 3.x de python no es compatible con la versión anterior python 2.x por lo que si anteriormente trabajábamos con la versión 2 y decidimos actualizarnos a la 3 los scripts escritos anteriormente no funcionaran, muchos de ellos solo por pequeños cambios por ejemplo el uso de print(“mensaje”) en lugar de print “mensaje” podemos optar por hacer los cambios manualmente pero si el código el de gran tamaño seria mucho trabajo, para esta situación python incluye un script que nos facilita el trabajo 2to3.py, aprendamos a usarlo.

Persistencia de datos YML - XML

Imagen
Siempre que trabajemos en un proyecto ya sea de visión artificial o cualquier otro tipo de proyecto en algún momento necesitaremos almacenar datos y recuperarlos posteriormente para usarlos de un modo u otro, opencv proporciona la clase FileStorage para facilitarnos el almacenamiento y recuperación de datos opencv.

Instalar Tesseract-OCR en Visual Studio

Imagen
Tesseract en una librería Open Source creada para el reconocimiento óptico de caracteres (OCR), tesseract-ocr puede escanear imágenes en distintos formatos y reconocer caracteres en más de 60 idiomas, ademas esta disponible para múltiples plataformas como Windows, Linux, Mac OSX, Android, IPhone.

Librería Boost en Visual Studio

Imagen
Esta es una librería de código abierto que nos permite extender las capacidades el lenguaje de programación C++, boost puede ser usada en cualquier tipo de proyectos ya sea libres o comerciales ya que se distribuye bajo licencia BSD, en la actualidad cuenta con un gran numero de librerías, incluidas las bibliotecas de álgebra lineal, la generación de números pseudoaleatorios, multihilos, procesamiento de imágenes, expresiones regulares, pruebas unitarias, entre otros.   

Algebra Lineal con OpenCV

Imagen
Opencv nos brinda apoyo a la hora de realizar cálculos matemáticos, pues ya cuenta con varias funciones pre construidas que nos serán de gran ayuda a la hora de realizar nuestros proyectos de computación visual, vamos a ver algunas de estas funciones principalmente las que nos permiten trabajar con las matrices opencv.

OpenGL en WPF .Net

Imagen
Como lo dice el titulo vamos a crear una aplicación opengl con el framework .net y la tecnológica WPF, para ello utilizaremos el complemento SharpGL que nos brinda acceso a la API de OpenGL desde .net, luego de instalarlo crearemos nuestra primera aplicación.

Argumentos de Longitud Variable C++

A la hora de crear una función en C++ por lo general indicamos el numero de argumentos y su correspondiente tipo, por lo que podríamos pensar que siempre que definimos una función esta solo podrá recibir la cantidad de argumentos especificada según el tipo indicado por cada argumento, sin embargo podemos utilizar los () para indicar un numero indefinido de parámetros.

OpenCV en GUI Win32

Imagen
Si estamos desarrollando una aplicación para Windows y trabajamos con el Windows API también llamado Win32, necesitaremos realizar conversiones para manejar las imágenes con opencv y mostrarlas en la interfaz win32, utilizaremos D2D (Direct2d) y WIC (Windows Imaging Component) para lograr esta interoperabilidad.

Java Splash Screen

Imagen
Un splash screen es una ventana que se muestra al iniciar nuestra aplicación, es bastante útil cuando tenemos una aplicación java que necesita cargar recursos al iniciar, si esta operación tarda mucho tiempo podemos mostrar un splash screen para indicarle al usuario que la aplicación esta cargando.

Detección de movimientos OpenCV

Imagen
Otra de las aplicaciones muy practicas que podemos crear con opencv es un sistema de detección de movimientos, podremos por ejemplo usar una webcam para detectar movimiento y hacer que se una notificación a nuestro teléfono, las aplicaciones son muchas por lo que en este tutorial nos iniciaremos en la detección de movimientos con opencv. 

Contador de descargas para Blogger

Imagen
Si tienes un blog en Blogger donde le das la posibilidad a tus lectores de descargar algún archivo, códigos de programación, en mi caso, tal vez se te a acorrido mostrar un contador de descargas para cada archivo descargado, si es esto lo que deseas hacer te enseñare a programarlo para que lo puedas adaptar a tus necesidades.

Detección de figuras geométricas

Imagen
En tutoriales anteriores aprendimos a detectar líneas y círculos en una imagen, esta vez avanzaremos un poco mas y detectaremos las figuras geométricas básicas como: triángulos, cuadrados, círculos y pentágonos, haciendo uso de la librería opencv.
Previo a la detección de figuras geométricas aprenderemos a usar las funciones opencv que nos ayudaran a conseguir lo que deseamos. Detección de contornos de una imagen La función findContours devuelve un conjunto de puntos que representan el contorno de una imagen, esta imagen debe ser binaria, además findContours modifica la imagen por lo que debemos tener cuidado. Esta función nos servirá de mucho para la detección y reconocimiento de figuras geométricas y de otros objetos. Una vez tengamos los contornos podemos mostrarlos usando la función drawContours esta se encargara de unir con líneas los puntos obtenidos por la función anterior, podemos indicar un grosor de línea en pixeles o indicar –1 para rellenar toda la figura. Antes de buscar los …

Ttk Nuevos Widgets Tkinter

Imagen
En la entrada anterior hablamos de los widgets con temas del modulo ttk de tkinter, les había dicho que a este modulo se le habían agregado nuevos widgets, pues son 6, estos son: Combobox, Notebook, Progressbar, Separator, Sizegrip y Treeview.

Aplicaciones Win32 con MFC

Imagen
Microsoft Foundation Classes (MFC) son un conjunto de librerías para crear aplicaciones de escritorio con Visual C++, MFC encapsula el API de Windows (Win32) en un conjunto de clases orientadas a objetos para facilitar su manejo.

JDBC Procedimientos almacenados

Usando el controlador JDBC para tener acceso a un servidor ya sea SQL Server o MYSQL podemos llamar a procedimientos almacenados, estos son funciones que están alojadas en la propia base de datos y que podemos llamar como si fuesen funciones o procedimientos de cualquier otro lenguaje de programación.

Conectar Java con MySQL

Imagen
Al desarrollar una aplicación por lo general necesitamos guardar y acceder a información que puede estar almacenada en una base de datos, si este es el caso y hemos elegido almacenar la base de datos en un servidor MySQL, te enseñare como hacer la conexión con el lenguaje Java y el IDE Netbeans.

Encuentra la versión actualizada de este tutorial en: Conectar a base de datos MySQL.

Restablecer configuración de Visual Studio

Imagen
Muchas veces hacemos configuraciones en el IDE Visual Studio y no sabemos como restablecer los cambios que hemos hecho por lo que tenemos un funcionamiento inesperado del IDE, en este post les enseñare como restablecer las configuraciones de visual studio.

Generar números aleatorios en C++

C++ cuenta con funciones para le generación de números pseudo-aleatorios, podemos hacer uso de varias funciones combinadas para proporcionar mayor aleatoriedad al algoritmo implementado por la función rand en C++.

Win32 Botones

Imagen
Los controles son clases especiales de ventanas los cuales nos sirven para interactuar con el usuario, entre los controles más comunes tenemos el button o botón sobre el que podemos hacer clic. La creación de los controles win32 la haremos una vez se haya creado la ventana en el mensaje WM_CREATE.

Widget con temas

Imagen
Si hemos sido algo observadores hemos notado la apariencia un poco rustica de los widgets que hemos estado viendo, pero debemos saber que podemos usar widgets con temas, en este caso el tema del sistema operativo que estemos usando, re3cor5demos que tkinter funciona en sistemas operativos como Windows, Linux y Mac.

Menú Principal

Imagen
Normalmente todas las aplicaciones cuentas con un menú principal ubicado en la parte superior de la ventana, con tkinter también podemos añadir este tipo de menús. A este menú le podemos asociar acciones a cada item o submenu que agregamos a través de un command.

Ejecutar un .exe (Iniciar un Proceso)

.Net cuenta con la clase Process para la ejecución y control de procesos en una aplicación, esto lo podemos aplicar cuando deseamos que nuestra aplicación ejecute un proceso o programa externo .exe, para tener mayor control sobre la ejecución del .exe podemos usar ProcessStartInfo en conjunto con la clase mencionada anteriormente.

Método de Descomposición LU

Imagen
La descomposición de LU es una técnica que consta de dos pasos, la descomposición de LU y la sustitución; Al igual que la técnica de gauss requiere de la aplicación de técnicas de pivoteo para evitar la división por cero y evitar errores en los resultados.
Paso 1: descomposición de L y U, es posible utilizar gauss para descomponer nuestro sistema de ecuaciones en una matriz L y otra U. Matriz L      

F21 = a21 / a11
F31 = a31 / a11
F32 = a’32 / a’22

Matriz U obtenida mediante eliminación de gauss


d1, d2, y d3 permanecen intactos.
Algoritmo escrito en C# que realiza la descomposición de LU, en este algoritmo que se realiza técnica de pivoteo por lo que se pueden producir errores al dividir por cero. ///<summary>
/// Algoritmo que realiza descomposicion LU
///</summary>
///<param name="matrixU">matriz que contiene el sistema de ecuaciones a resolver (completo)</param>
///<param name="matrixL">matriz vacia que contendra (L) del mismo tamañ…

Gauss Jordan

Imagen
Es una variante del método de gauss, en lugar de obtener una matriz triangular obtendremos una matriz identidad, por consiguiente no será necesario hacer sustitución hacia atrás para obtener nuestra solución.
Ejemplo

Normalizar la primera fila hacer 1 el primer elemento dividiendo toda la fila entre 3
Hacer ceros la primera columna Fila pivote = primera fila
k = 0.1 * 1, la segunda fila será  = segunda fila – (k * fila pivote)
k = 0.3 * 1, la tercera fila será  = tercera fila – (k * fila pivote)

Se repite el mismo proceso para la segunda columna (fila pivote = segunda fila) y la tercera (fila pivote = tercera fila) para obtener la solución siguiente:
Algoritmo escrito en C# para la solución de un sistema de ecuaciones por el método de gauss-jordan

privatevoid GJ(ref double[,] matrix, int filas, int columnas)
{
for (int fpivot = 0; fpivot < filas; fpivot++)
{

double nor = matrix[fpivot, fpivot];

for (int i = 0; i < columnas; i++)
{
matrix[fpivot, i] = matrix[fpivot, i] / nor;
}

int f = …

Gauss Seidel y Jacobi

Imagen
El método de gauss seidel y el metodo de jacobi son similares, ambos usados para resolver sistemas de ecuaciones lineales, el método de gauss seidel debe su nombre a los matemáticos Carl Friedrich Gauss y Philipp Ludwig von Seidel mientras que el método de jacobi al matemático alemán Carl Gustav Jakob Jacobi. Gauss-Seidel Este método iterativo es el más comúnmente usado. Debe asegurase de que los elementos de la diagonal no sean ceros para que se pueda resolver por este método. Ejemplo si se tiene un sistema  de tres ecuaciones, X1 se puede despejar de la primera ecuación, X2 de la segunda y X3 de la tercera.



Ahora se puede empezar a resolver para encontrar X1 suponemos que X2 y X3 son ceros, resolvemos para X2 ya tenemos X1 que lo encontramos anteriormente y suponemos que X3 es cero, para encontrar X3 solo resolvemos pues ya tenemos X1 y X2. El proceso se repite solo que utilizado los valores que ya tenemos de X1, X2, X3 hasta que la solución converja lo mas cercano a los valores reales. …

Clasificación de Genero (FaceRecognizer)

Imagen
FaceRecognizer a parte de reconocimiento facial lo podemos usar para clasificar el genero de un rostro o sea determinar si es hombre o mujer, usaremos el algoritmo fisherfaces que entrenaremos con una base de datos de rostros correspondientes a hombres y mujeres.

Cuadros de Dialogo tkinter

Imagen
tkinter cuneta con cuadros de dialogo ya sea para mostrar al usuario alguna información o pedirle que introduzca datos que requiera la aplicación, existen dos tipos, los Modal bloquean la interfaz grafica de usuario (GUI) hasta que se cierre y los NonModal que interactúan con el usuario sin interferir con la ventana principal.

Reconocimiento Facial

Imagen
OpenCV cuenta con la clase FaceRecognizer para facilitarnos el reconocimiento de un rostro presente en una imagen, haremos uso de los clasificadores en cascada para detectar el rostro y luego lo identificaremos con FaceRecognizer usando alguno de los algoritmos disponibles como: EigenFace, FisherFace y LBPH. Nuestro proyecto de Reconocimiento Facial usara LBPH.

Analizador Léxico

Imagen
Un analizador léxico es el componente encargado de identificar los tokens válidos en un código de entrada y emitir errores de ser necesario, crearemos un analizador léxico basado en expresiones regulares capaz de detectar números, cadenas, comentarios, operadores, identificadores y palabras reservadas.

Python GUI–Checkbutton y Radiobutton

Imagen
Los controles Checkbutton están diseñados para mostrarle al usuario varias opciones, el usuario puede elegir varias opciones, para el Radiobutton es parecido pero solo se puede elegir una opción.

Python GUI Scales (Sliders)

Imagen
Estos widget nos permiten agregar a las interfaces gráficas de usuario (GUI) que estemos diseñando un rango de valores que puede ser seleccionado por el usuario de nuestra aplicación.