Lectura de Matriculas (ANPR)


([N2] ceferino) #1

Hola, buenos días:

Intento experimentar con software de reconocimiento de matriculas y he encontrado en este link una libreria de node.js :

https://www.npmjs.com/package/node-openalpr

¿Algun forero podria instruirme cómo implementar en v7 estos frameworks?

Muchas gracias

Ceferino


([N1] wikan) #2

Para instruirte habría que mirar como está implementado.
La librería es un bind de otro producto, podrías mirarlo y ver si lo puede integrar sin pasar por node

En todo caso, podrías modificar el ejemplo que te dan y que te devuelva la matrícula en un fichero de texto o si usas node incluso enviarla por tcp.


([N2] ceferino) #3

Gracias, Wikan:

Quiero decir que no tengo claro cómo instalar node.js en v7 y las librerias de node-openalpr.

¿Qué archivos son necesarios y dónde hay que guardarlos?
¿Cómo es la estructura de la solucion v7?
¿Algún tutor del que echar mano?

Por otro lado la aplicacion openALPR para windows tambien admite ordenes por comandos de DOS, el cual devuelve un json.
Por linea de comandos de windows he visto cómo funciona. Seria ejecutar comando de sistema en v7 guardando el json en un txt y llamandolo por js para leer el json. Tendría que probarlo. Tambien podría tirar por ahí, pero viendo el node.js tenía curiosidad por aprender a implementarlo tambien.

Gracias
Ceferino


([N1] tony diana) #4

Suena muy entretenido, creo que vamos a estar espectantes cuando nos compartas cómo solucionarlo


([N1] wikan) #5

No podrás implementar node directamente con Velneo. Si te fijas el código de node es javascript pero usa require(“librerias”) y posee clases que Velneo no tiene.

Yo tengo micro servicios realizados en node y se comunican con la aplicación por tcp/ip.


([N2] ceferino) #6

Buenos días:

Dado que Wikan habla de no poder implementar Node, lo he realizado con un comando de proceso ejecutar comando del sistema.
Adjunto una captura de pantalla.
A un lado el jpg tomado de la camara, al otro el json que genera el comando del sistema del software openALPR y en el centro el json parseado con la lectura devuelta del OCR.

Saludos
Ceferino



([N1] wikan) #7

Muy bueno.

Aunque no puedas implementar librerías de node directamente. Te digo como lo haría yo.

Podrías crear un “servicio” en node:

  • Que escuche un puerto para recibir la orden de lectura de matrículas
  • Cuando haga la lecturas, te reenvia la información por ese mismo socket

En Velneo te quedaría tan transparente como crear un objeto tcp con la orden de lectura y esperar la respuesta de node con el json.

Así independizas funcionalidades, node hace su trabajo y velneo como aplicación de gestión la suya.


([N4] SOLUSEGURIDAD) #8

Saludos

Wikam y Ceferino muy interesantes ambos planteamientos.

Yo estoy en el mismo dilema de usar node y resolver las deficiencias del objeto TCP de velneo.

Wikan como implementaste “Yo tengo micro servicios realizados en node y se comunican con la aplicación por tcp/ip.”
como lo solucionaste ? microservicios? como los gestionas desde velneo.

Gabriel Aba
PD: que el Objeto TCP de velneo cierre los socket y no me permita mantenerlos abiertos es una pesadilla.


([N1] wikan) #9

Depende de lo que quiera montar.

Yo tengo varios casos

  • El socket abierto en node y cuando termine envía la información al objeto tcp de Velneo.
  • Velneo envía por tcp a node algo, este hace el trabajo el duro y devuelve. Puede ser durante la conexión o de manera asíncrona. Lanzas, procesa y cuando termina devuelve por tcp

Si podrías mantener la conexión abierta en Velneo si tu haces la otra parte. Metes en un formo el protocolo recibir. Y hasta que no recibas x carácter no terminas el bucle.


([N4] SOLUSEGURIDAD) #10

Saludos wikan gracias por tu ayuda

Con el objeto TCP velneo ya resolvi la parte de recibir y mantenerlo recibiendo por medio de un for, mi problema es con la parte cliente en el caso que la comunicacion la inicia la app, como el objeto client es tipo funcion no puedo mantener la comunicacion por medio de un for, la unica salida que veo es por medio de nodejs, usar nodejs como cliente y que mantenga la comunicacion abierta y me entregue los datos a medida que llegan a un puerto tcp velneo, mi pregunta es como me recomiendas que maneje a nodejs desde velneo, por medio de ejecutar comando o ejecutar aplicacion, muchas gracias. cual es la mejor manera.

Gabriel Alba
Colombia


([N1] wikan) #11

Todo depende de lo que necesites.

Yo uso node para ciertas cosas que saco de la aplicación ya que no tienen que ver con su target.

En node tengo un servidor rest montado y desde la aplicación envío un json a según que url para que realiza x tarea. Una vez termina puedo responder a otro socket escuchando en la aplicación o devolver mediante la misma llamada.

De todas formas, dependerá de ambos puntos, con una función cliente perfectamente podrías mantener una comunicación abierta. Aunque hace dos semanas depende que es posible que se cierre la conexión si un recibir buffer se supera y demás, no lo tengo acotado, así que no puedo indicarte bajo que circunstancias ocurre.


([N4] SOLUSEGURIDAD) #12

Saludos Manuel

Gracias por tu sugerencia, muy acertado voy a probar y te comento los resultados

Gabriel Alba


([N4] SOLUSEGURIDAD) #13

Saludos nuevamente

He quedado muy perdido, mi idea no es crear un servidor rest full, no lo necesito, solo quiero administrar los puertos de node desde velneo con los json que me sugieres, por favor dame una pista de por donde empezar, que debo instalar, hay muchas opciones, te lo agradezco


([N4] SOLUSEGURIDAD) #14

Saludos Manuel

Encontre esto
https://github.com/turn/json-over-tcp

me parece que es lo que tu me sugieres

Gabriel Alba


([N1] wikan) #15

Por tcp mandas los que necesites, como si una simple palabra.

Si eres tú quien va a construir el esquema de comunicación es mucho más fácil. TCP es solo la vía de comunicación como podría ser escribir un fichero y el otro lo lea.

Yo te he comentado los distintos casos que tengo pero el que más uso es un node como rest server. Cada endpoint realiza una tarea y devuelve.

¿Cómo activo node desde Velneo?
Puede ser por un simple socket tcp o usando XMLHttpRequest.

¿Cómo recibo la respuesta?
Depende si lo quiero síncrono o asíncrono. Para ese último caso defines un socket en Velneo para recibir las respuestas.


([N4] SOLUSEGURIDAD) #16

Gracias wikan

Voy a implementarlo y te comento los resultados

Gabriel Alba


([N1] wikan) #17

Ya todo esto es fuera del hilo pero bueno.

No te respondí a que uso.

nodejs + expressjs, es lo básico para un rest server, luego cada EndPoint usa otros módulos según la funcionalidad.
Velneo (XMLHttpRequest o Protocolo TCP)

¿Para qué los uso?

  • Envio de sms
  • Envio de emails
  • Creación de templates para emails
  • Creo que en algún cliente lo tengo, un log asíncrono
  • Recepción de imágenes por medio un uploader html5, node las procesa, optimiza las coloca en directorio correcto y por tcp le dice a la aplicación que ese registro ha recibido imágenes.

Sé que tengo algo más. Pero la idea básica es, sacar de la aplicación lo que no tiene que ver con la lógica. No complicarme en intentar hacerlo todo con Velneo y delegar en “otros”


([N4] SOLUSEGURIDAD) #18

Saludos Manuel

Muchas gracias por tu ayuda y orientación, lo resolvi con nodejs por json, configuro los puertos y la respuesta me la devuelve a un socket de velneo.

Velneo deberia mejorar el objeto TCP, esto se viene planteando hace muchos años.

buen dia

Gabriel Alba


([N4] bitcodesoft) #19

Aplicación móvil para captura de matrículas (QML 2), aunque el cliente se conecta con el servidor, todo se envía y recoge con el protocolo TCP/IP:

https://youtu.be/uGTnhv9DK6A