Entradas

Job en android kotlin

1. Introducción Breve: ¿Qué es un Job ? En el mundo de las Corrutinas de Kotlin (que son como hilos de ejecución súper ligeros), un Job es simplemente un manejador o un “recibo” de una tarea que se está ejecutando en segundo plano. Piénsalo como el ticket que te dan cuando dejas ropa en la lavandería: ese ticket te permite saber si la ropa está lista, si se está lavando o, si decides que ya no la quieres, usarlo para cancelar el pedido. Un Job te da control total sobre la vida de tu tarea en segundo plano. 2. Ejemplo de Aplicación en el Mundo Real Imagina que estás construyendo una aplicación de edición de fotos. El usuario aplica un filtro complejo a una imagen de alta resolución. Esta operación tarda unos segundos y se ejecuta en segundo plano para no congelar la pantalla. De repente, el usuario decide que no le gusta cómo está quedando y presiona el botón “Cancelar” o retrocede a la pantalla anterior. Sin un Job , la aplicación seguiría gastando batería y procesad...

Python Binance API

Imagen
Vamos a aprender como integrar la API de Binance con nuestra aplicación Python, para este pequeño tutorial de programación estudiaremos los pasos necesarios que nos permitirán integrar esta tecnología de manera que podamos desarrollar una app que pueda dar seguimiento a los precios de las criptomonedas y realizar operaciones con las mismas, ya sean compras o ventas desde el exchange antes mencionado. Como integrar con Python 3 Lo primero es instalar las correspondientes librerías, lo hacemos con el siguiente comando: pip install python-binance pip install keyboard Si tienes estás en Windows y tienes problemas con la instalación de la librería Twisted la cual se requiere como dependencia puedes descargarla manualmente desde el enlace asegúrate de descargar la versión que coincida con la versión de Python que tienes instalada y también el sistema operativo. El paso siguiente consiste en generar las claves de acceso a la api que nos permitirá acceder a nuestra cuenta en dicho excha...

Ejecutar aplicación WPF con permisos de administrador

Imagen
En ocasiones requerimos que nuestra aplicación se ejecute con permisos de administración por diferentes motivos, en este breve tutorial veremos como podemos hacer que una app desarrollada con WPF solicite permisos al momento de ejecutarse. Asumimos que ya tenemos una nuestra aplicación desarrollada y que estamos trabajando con Visual Studio. Lo que debemos hacer es ir a la pestaña explorador de soluciones, clic derecho, agregar nuevo elemento. Seleccionamos archivo de manifiesto de Windows. En el archivo app.manifest que se crea modificamos el código para cambiar lo siguiente: reemplazar: <requestedExecutionLevel level="asInvoker" uiAccess="false" /> por: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> El código quedaría de la siguiente manera: <?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1...

Integrar ExoPlayer con Android Leanback

Imagen
Leanback es la librería de Android que facilita el desarrollar aplicaciones para Android TV, muchas de estas aplicaciones requieren o hacen uso de un reproductor multimedia, por lo que en este tutorial veremos como integrar el reproductor ExoPlayer .

OpenCV lector de códigos QR

Imagen
A partir de la versión 4.0.0 de OpenCV se agregó la funcionalidad de poder detectar y decodificar códigos QR sin necesidad de librerías externas, sin embargo la misma no realizaba el trabajo de la mejor manera, en la reciente versión 4.1.2 se agregaron mejoras que probaremos en día de hoy, veremos como usar OpenCV para crear un detector y decodificador de códigos QR en tiempo real con unas pocas líneas de código C++. La clase encargada de realizar la respectiva tarea es QRCodeDetector , usando sus métodos detect(...) podremos detectar un código QR en una imagen en colores o a escala de grises, con decode(...) decodificamos el código y obtenemos la información que contenga el mismo, para nuestro ejemplo una URL, también podremos usar detectAndDecode(...) para hacer ambas tareas en una sola llamada. int main ( int argc , char * argv [ ] ) { // Init QR Detector QRCodeDetector qr = QRCodeDetector :: QRCodeDetector ( ) ; VideoCapture capture ; if ( capture . open ( ...

Segmentación de instancias con OpenCV DNN

Imagen
La segmentación de instancias es el proceso mediante el cual buscamos detectar un objeto en una escena y generar una máscara que nos permita extraer con mayor presición el objeto detectado, puede verse como el conjunto de dos procesos primero detectar el área rectángular que contiene el objeto y luego obtener la máscara que segmenta dicho objeto.

Distribuir aplicación Qt-5 en Windows

Imagen
Luego de haber creado nuestra aplicación Qt 5 para Windows la pregunta es, como la distribuimos, es decir que necesitamos hacer para que nuestra aplicación se ejecute en los ordenadores de los usuarios, para esta tarea el Framework Qt nos provee de una herramienta de línea de comandos llamada windeployqt , es este tutorial vamos a ver su uso.

Clasificación de género y detección de rostros

Imagen
Seguimos probando lo que podemos hacer con el módulo DNN de OpenCV versión 4.0, esta vez vamos a crear una simple aplicación la cual captura video de la webcam, detecta un rostro e intenta predecir si el mismo pertenece a una cara masculina o femenina.

Medir tiempo de ejecución y FPS

Imagen
En ocaciones necesitamos conocer el tiempo que le toma a una función realizar su trabajo, para ello utilizaremos las funciones proporcionadas por OpenCV, estas son cv::getTickFrequency() y cv::getTickCount() , mas adelante veremos que hace cada una de ellas y como podemos usarlas para calcular los FPS cuando hacemos una aplicacion que funcione en tiempo real.

Emulador android en CPU AMD Ryzen

Imagen
A partir de las versiones 3.2 Beta de Android Studio se introdujo la posibilidad de usar el emulador android en procesadores AMD anteriormente esto era posible pero el redimiento no estaba a la altura, haciendo uso de la API de virtualizacion de Windows 10 podemos acelarar la ejecución del emulador y trabajar mucho mejor sin la necesidad de tener una CPU Intel.

Conectar OpenCV a cámara IP

Imagen
Creamos este corto tutorial para que podamos aprender a conectar una aplicación OpenCV a una cámara IP, decir que es bastante sencillo y no hay que hacer mas que colocar la dirección IP a la que nos deseamos conectar, el resto es exactamente igual a como lo hariamos para trabajar con un video en local.

Activar C++ 17 en Visual Studio 2019

Imagen
Visual Studio 2019 tiene soporte para los estandares C++ 14 y C++ 17 pero al crear un proyecto estos no están habilitados por defecto, por lo que se hace necesario activar esta característica para que la misma pueda ser reconocida por el IDE. Veamos el siguiente código de ejemplo: Como vemos se marca el error en el if al utilizar un if-init, para solucionarlo debemos indicarle al IDE que usaremos el estándar 17, para ello vamos a la opción propiedades del proyecto / C++ / idioma / Estándar de lenguaje Con esto podremos ver que ya no se muestra el error y podemos compilar sin problemas.

Estimar pose cuerpo humano

Imagen
Para este tutorial veremos como estimar la pose de un cuerpo humano, es decir, trataremos de localizar las posiciones en las que encuentra cada una de las partes del cuerpo, brazos, piernas, cabeza, tronco, etc., para esto utilizaremos PoseNet que trabaja sobre Tensorflow, esta vez lo haremos desde NodeJS.

Desplegar imagen Docker en AWS

Imagen
Veamos como desplegar una imagen Docker en AWS Beanstalk, para este ejemplo creamos una aplicación sencilla usando Node y el Framework ExpressJS, añadiremos su respectivo Dockerfile y finalmente, que es lo que realmente nos interesa aprenderemos a desplegar esta app en AWS.

Subir archivos a AWS-S3 desde Node

Imagen
Veremos como podemos subir archivos al servicio de almacenamiento en la nube proporcionado por Amazon, el mismo es llamado S3, utilizaremos el lenguaje de programación Node para crear un pequeño ejemplo de como subir un archivo que se encuentre en el servidor.

Cargar modelos Tensorflow en OpenCV DNN

Imagen
DNN es un módulo desarrollado para trabajar con redes neuronales profundas, anteriormente este debía se instalado desde opencv_contrib pero a partir de la versión 3.3 ya forma parte oficial de OpenCV por lo que no se requieren dependencias externas.

Detección de objetos planos

Imagen
Seguimos aplicando los conocimientos adquiridos en tutoriales anteriores , esta vez aprenderemos a detectar un objeto plano conocido que se encuentre dentro de una imagen, para hacer esto requerimos extraer los puntos característicos de la imagen de referencia (el objeto que deseamos localizar) para luego ubicar estos puntos en la imagen de destino, luego usando homografía podemos obtener la posición de dicho objeto.

Combinar imágenes con OpenCV

Imagen
Dedicaremos este tutorial a tratar de aplicar los conocimientos adquiridos en la publicación anterior, detección y descripción de puntos característicos , lo que intentaremos hacer es combinar dos imágenes que tengan una porción en común, para ello localizaremos los keypoints de ambas y haremos el pareo para luego transformar la segunda imagen de modo que se combine con la primera haciendo coincidir los keypoints .

Extracción de puntos característicos (keypoint)

Imagen
Los puntos característicos de una imagen, también llamados keypoints en inglés, son aquellas puntos que son fácilmente diferenciables en una imagen, para extraer dichos puntos OpenCV cuenta con diversas clases que implementan los algoritmos más conocidos que han sido desarrollados para este propósito, los mismos se encentran en el módulo cv::features2d algunas de ellas son AKAZE, BRISK, ORB, etc., otros algoritmos que requieren licencia los puedes encontrar en el módulo opencv_contrib , más específicamente cv::xfeatures2d podemos usar SURF, FREAK, SIFT, entre otros.

OpenCV4Android Detección de Objetos

Imagen
Luego de haber creado nuestra primera aplicación Android OpenCV vamos a introducir conceptos un poco más avanzados y funcionales, en este tutorial aprenderemos a usar los clasificadores en cascada XML para detectar un objeto de nuestro interés, en este caso utilizaremos uno los clasificadores pre-entrenados que se incluyen en el SDK pero puedes entrenar tu propio clasificador que que detecte cualquier objeto que desees.

Temas relacionados