Página 1 de 2

OCR con cámara

Publicado: 07 Jun 2010, 12:48
por Jonny
Hola

A ver que me aconsejais para esto:

Quisiera conectar una cámara a un pc, para que captara varias cosas.
Por ejemplo, texto que hubiera en un papel, o en una pantalla de ordenador, así como imágenes, objetos en movimiento... y lo transmitiera a un programa y este lo procesara. Para enviar por e-mail, guardar en un archivo, etc
¿Que os parece?
Se puede hacer esto con más o menos dificultad en autoit?
Almenos, empezar por texto, que sería quizá lo más sencillo ¿No?

¿Qué tipo de cámara debería ser?.
Me gustaría que fuera un buen reconocimiento, por lo qué además de depender del programa, supongo que la cámara tendrá algo que ver para ello, a ver que me recomendais...

Salu2!

Re: OCR con cámara

Publicado: 08 Jun 2010, 03:11
por BasicOs
Cualquier cam normal te puede valer. Lo que comentas ya lo tienes cuando preguntabas por lo del captcha, es algo similar a lo que ya publicamos antes. :smt035 :smt035 :smt046
Aqui tienes algunos posts sobre captchas, aunque también puedes hacer busquedas como OCR o funciones pixel
http://www.emesn.com/autoitforum/search ... ds=captcha
Salu22:)

Re: OCR con cámara

Publicado: 08 Jun 2010, 07:11
por Jonny
Hola

Bueno... lo que más me inquietaba, era el tema de reconocer desde una cámara, más que el reconocimiento en sí, de una imagen que esté en el mismo equipo, que sé que con más o menos trabajo puede hacerse.

Por ejemplo:

¿Como comunicar la cam con la aplicación autoit?

¿tendrá la cam alguna especie de api para interactuar con ella?... se podrá hacer directamente desde los controladores de esta?...

La verdad, es que me gustaría hacerlo sin aplicaciones de por medio, si fuera posible.

Y luego:
¿La efectividad del reconocimiento de una imagen será igual captado por una cámara que si se hace directamente en un ordenador? (por ejemplo validar un captcha de una página con un programa).

Por cierto, he leído, que las funciones pixel de autoit, son un tanto lentas trabajando ¿Es cierto?

Porque de ser así, quizá no sea factible trabajar con esas funciones ¿no?.

Salu2!

Re: OCR con cámara

Publicado: 08 Jun 2010, 16:05
por BasicOs
Si es factible, lo que tienes que adaptarlo a tus necesidades.
Cuando lo uses puedes ir ajustando.
Puedes empezar con visualizar en la pantalla con la cam normalmente, y hacer una busqueda de pixels sobre lo que sale en stream.
Por ejemplo, apaga la luz y si esta negro lo que sale en la cam, ejecuta una opción (if/then), si deseas :smt041 empezar por lo mas simple...
Salu22:)

Re: OCR con cámara

Publicado: 08 Jun 2010, 18:29
por BasicOs
Vamos a ver si puedes hacer una sencillo:
Si es de noche o sea si esta oscura la ventana de la visualización de la webcam, se ejecuta abrir un jpg blanco luminoso en full-screen, con lo que la habitación ya no está oscura, durante 10 minutos, para no gastar tanta pantalla.
Se recibe algo de luz durante unos minutos,
Esto es un ejemplo sencillo por si lo deseas hacer, y lo vamos publicando :smt023 :smt023
Salu22:)

Re: OCR con cámara

Publicado: 09 Jun 2010, 13:37
por Jonny
Hola

A ver... Entonces, se trata de visualizar con la cámara, y si lo que se capta es oscuro (osea negro) muestro una imagen en la pantalla del ordenador, digamos para que haya luz?.

A ver como empiezo esto, y si soy capaz de hacer algo más o menos decente lo publico para que veais.

Salu2!

Re: OCR con cámara

Publicado: 09 Jun 2010, 15:03
por BasicOs
Jonny escribió:Hola

A ver... Entonces, se trata de visualizar con la cámara, y si lo que se capta es oscuro (osea negro) muestro una imagen en la pantalla del ordenador, digamos para que haya luz?.
Correcto, así es. Y cuando vuelva la luz (enciendas la luz de verdad) que en la camara se verá muy claro entonces cerrar el jpg de luz de emergencia, ya que ya hay luz en cantidad.
Tambien una opción de timer, para que sea durante 10 minutos, esta luz del jpg.
A ver como lo llevas.. puedes publicarlo aunque no este completo y ya te ayudamos.
Salu22:)

Re: OCR con cámara

Publicado: 09 Jun 2010, 20:35
por Jonny
Hola

Ya estoy en ello. Pero llevo toda la tarde buscando una api de Windows, para detectar si hay una cámara conectada al pc, para así programar un control de errores (ya se que no es relevante para el programa, pero quería hacerlo en la aplicación final), de forma que al ejecutar la aplicación, si no hay una cámara conectada, en vez de intentar capturar imagen, aparezca un mensaje de error que lo indique, y en caso contrario la cámara empiece a captar la imagen, pero no encuentro nada.
He encontrado códigos de VB, para manipular la webcam, por ejemplo un api que se llama avicap.dll, pero no tiene ninguna función (hasta donde yo he visto) para lo que quiero.

¿Sabeis como hacerlo?
El Messenger por ejemplo, sí detecta si hay o no una cámara conectada, así que alguna forma tiene que haber...

Salu2!

Re: OCR con cámara

Publicado: 10 Jun 2010, 01:49
por BasicOs
lajajaja, sin darte cuenta Lo que vas a hacer es un programa para detectar problemas y errores en conexiones hardware de las camaras, sino un programa que sea inteligente con el entorno del pc e interactue con el, o sea que mejor vas a la cam sin LIARTE, sino puedes acabar creando un programa que te revise si tienes que reparar el pc o revisar los virus.

Si lo deseas puedes hacerlo facil para empezar, sin API.
Simplemente arranca un programa que maneje la cam y que tenga las funciones que dices (puede ser el messenger o el q te viene con la cam, o el irfanview. o tantos otros).
Si existe la cam y está enchufada y activada te tiene que salir una ventana con el nombre del titulo especifico, y dentro de este titulo no te sale el mensaje de que "no hay cam enchufada".
:smt048 :smt048 :smt048 :smt048 :smt048 :smt044 :smt044
Salu22:)

Re: OCR con cámara

Publicado: 11 Jun 2010, 06:56
por Jonny
Hola

Pero sin usar apis ¿como comunico el programa con la cam?

No entiendo muy bien lo de hacerlo arrancando el Messenger.

Encontré una mini UDF en el foro inglés para la webcam, pero la primera función (_Webcam_open) no parece funcionar, según entiendo que debería funcionar.

En cualquier caso, esa librería usa apis, y hace todas las funciones que en principio pueden hacer falta, que no son en realidad más que Empezar a grabar y parar la captura.

Las otras dos, "_Webcam_Open" (que en principio solucionaría el problema de detectar si hay o no webcam conectada) y "_Webcam_close", son para inicializar y detener la cámara.

A ver si estudio un poco más todo este tinglao, que es vastante durito jejeje.

Salu2!

Re: OCR con cámara

Publicado: 11 Jun 2010, 18:32
por BasicOs
Te decia que si no vas a usar el PC mientras ejecutas el programa de la cam puedes simplemente arrancar la cam y leer con la función pixel. Exactamente igual que con la funcion de captchas que vimos en otros post. O sea leyendo de la pantalla.
Para EMPEZAR por ahora, siempre puedes hacerlo de otra manera, la ventaja es que puedes debugear mirando lo que pasa en la cam cuando haces alguna lectura OCR.
¿Alguien puede explicarlo con otros palabras la manera "directa" de hacerlo? :smt017 :smt017 :smt017
Salu22:)

Re: OCR con cámara

Publicado: 12 Jun 2010, 14:12
por BasicOs
Jonny escribió:se trata de visualizar con la cámara, y si lo que se capta es oscuro (osea negro) muestro una imagen en la pantalla del ordenador, digamos para que haya luz?.
A ver como empiezo esto, y si soy capaz de hacer algo más o menos decente lo publico para que veais.
Buenas,
Alguien ha solucionado el problema de hacer este Script? Como lo llevas? :smt038 :smt038 :smt048
Salu22:)

Re: OCR con cámara

Publicado: 14 Jun 2010, 07:10
por Jonny
Hola

Sigo trabajando en ello, jejeje.
Pero no se como hacer lo que dices. Entiendo lo que quieres decir (De arrancar la cámara y leer con las funciones pixel, pero sin apis, no se como hacerlo, y con ellas es un tanto complicado.

¿Como se haría con Por ejemplo el Messenger como dices? ¿Alguna pista?....

¡Me he metido en un terreno ... Bastante duro!.

Por cierto, que para empezar quizá esté bien ver en una ventana lo que recoge la cam, para debuggear como dices, pero la aplicación final, me gustaría que no se viera en pantalla todo lo que captura la cámara, sinó que si hubiera que mostrar algo concreto se mostrara, pero no todo (con las apis de Windows ya ví que eso no va a ser así)...

Salu2!

Re: OCR con cámara

Publicado: 14 Jun 2010, 08:12
por Ximorro
Creo que BasicOS se refiere a que uses un programa que te muestre lo que ve la webcam, y con AutoIt "simplemente" analizas su ventana para ver por ejemplo eso de que esté oscuro o no.

O sea, que no tienes que manejar la cámara (por ahora), eso lo hace otro programa, algo así como hacer GetPixels y compañía en la ventana de un juego (que no controlas tú, analizas su ventana), pero en vez de ser un juego es el video de la webcam...

Re: OCR con cámara

Publicado: 14 Jun 2010, 17:00
por Jonny
Hola

Sí, creo yo también que es eso, solo que estaba intentando hacerlo con el messenger, que es el único programa así que tengo, que trabaje con la cámara, pero no se me ocurría como hacerlo.
Ha puesto un código que estoy mirando de adaptar a esto de detectar oscuridad, en otro post....

A ver si me sale bien.

Salu2!

Re: OCR con cámara

Publicado: 18 Jun 2010, 21:13
por Jonny
Hola

Ya estoy empezando a plantear código para el ejercicio que me puso BasicOS jejeje.

Mirando el programita que hizo él mismo en:
http://www.emesn.com/autoitforum/viewto ... =19&t=2180
más o menos se me ocurre como hacerlo, aunque lo que tenía que hacer yo era un tanto diferente (aunque no mucho).

Se trataba de comprobar si había oscuridad, para mostrar un jpg, un mensaje ... o algo (el fin era detectar la oscuridad), y aquí viene una duda.

¿Como detectaría con PixelGetColor si realmente hay oscuridad?

Porque comprobar si un pixel es negro, ni siquiera unos cuantos, no creo que sea la solución jeje.

A mí se me ocurre, comprobar toda la ventana de visualización de la cámara y si todos los píxeles son negros (toda la ventana es negra) hay oscuridad.
Pero quizá, esto fuera muy lento de procesar ¿no?
¿que os parece? ¿Se os ocurre otra forma de detectar que realmente haya oscuridad?.

Salu2!

Re: OCR con cámara

Publicado: 18 Jun 2010, 22:22
por BasicOs
Jonny escribió:Hola. Ya estoy empezando.
Mirando el programita que hizo él mismo en:
http://www.emesn.com/autoitforum/viewto ... =19&t=2180
más o menos se me ocurre como hacerlo, aunque lo que tenía que hacer yo era un tanto diferente (aunque no mucho).
Se trataba de comprobar si había oscuridad, para mostrar un jpg, un mensaje ... o algo (el fin era detectar la oscuridad), y aquí viene una duda.
¿Como detectaría con PixelGetColor si realmente hay oscuridad?
Porque comprobar si un pixel es negro, ni siquiera unos cuantos, no creo que sea la solución jeje.
A mí se me ocurre, comprobar toda la ventana de visualización de la cámara y si todos los píxeles son negros (toda la ventana es negra) hay oscuridad. Pero quizá, esto fuera muy lento de procesar ¿no?
¿que os parece? ¿Se os ocurre otra forma de detectar que realmente haya oscuridad?.
Jajajajja, Johnny, disculpa no quiero ser descortes, pero creo que me estás tomando el pelo o bien no has visto el código del post que comentas.
Una de las normas del foro, es pararse a leer lo que hay publicado en el foro, con tranquilidad para ver como poder emplearlo, tu lo encuentras pero no te fijaste un poco en lo que explica.

Si te paras a leer un poco y te fijas en el enlace del Brazo Robot que has puesto viene indicado en varios sitios, reiterativamente
Primero te digo donde en varios sitios:

1.- En mi explicación inicial, en el codigo inicial con PixelGetColor() y si pruebas el código.
2.- En la respuesta de Ximorro que ya comenta algo del primer código.
Ximorro escribió: Je, je, mola lo del modo aprendizaje, en vez de ponerlo a piñón fijo le dices cada vez qué color tiene que buscar, ¡muy bueno! :smt024

Una cosa, ¿es muy fiable lo de volver a encontrar el color? Lo digo porque trabajando en imágenes reales en 24bits es bien fácil que cuando vayas a buscar el color no sea exactamente ese, sino tremendamente parecido (cambios en la luminosidad, reflejos, etc...) Para la activación quizás sería mejor usar PixelSearch en vez de PixelGetColor, aunque busque en un sólo pixel, con PixelSearch puedes usar el parámetro shade-variation, para que busque colores muy similares. Quizás el ojo no los distinga, ¡pero PixelGetColor sí! :smt003
3.- En el código adicional con PixelSearch, que te dá mas variaciones de los colores en varios shade-variation, para cambios de luz de nuevo.
Segundo el que:

Que primero el programa APRENDE LO QUE LE MUESTRAS, y luego usa lo que aprendió para hacer el OCR.
O sea que el código que tienes ya te vale si apagas la luz y LE ENSEÑAS y explicas LO que tu quisieras llamar OSCURIDAD que es lo que va a usar luego en el resto del programa,

Ánimo, y es positivo reflexionar sobre el código, ayuda a comprenderlo y a reusarlo. :smt024
No quiero decir nada, solo que si cambias algo de tu "control de impulsos" puedes aprender mejor y aprovecharte más del recurso del foro, y hacer que los demás se sientan más felices participando porque no tienen qu repetir lo que acaban de poner en el post anterior... PACIENCIAA:smt005
Felicidades por participar aunque sea sin esperar a ver la pregunta cual fué o sin pensar la pregunta, :smt015 :smt015 :smt017 :smt017 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 :smt010 puede crearse algo de impotencia por parte del que participa cuando reiteras algo compulsivamente, o que se acaba de decir, Y PORQUE no pongas en negrita lo importante y algún dibujito o gráfico para animar un poco. :smt040 :smt040 :smt043 :smt043
En resumen, muchos se pueden sentir mal cuando lean un post que se vuelve repetitivo o sin dibujos o colores, ya que debería ser ameno.
Salu22:)
PD:A cualquiera nos puede pasar tambien.. puntualmente claro

Re: OCR con cámara

Publicado: 19 Jun 2010, 13:42
por Jonny
Hola

En la respuesta de Ximorro ... La verdad, es que no encuentro nada que me diga como hacer lo que preguntaba..

Lo que pasa, es que mi idea era hacerlo directamente, sin enseñar al programa ... jeje.

¡claro que me fijo en los mensajes y los códigos!.
Pero No se trata de hacer una calcamonía de estos ¿no?...

Ya decía al principio, que teníais que tener paciencia, que nunca había tocado AutoIt en este ámbito.

Acias...

Salu2!

Re: OCR con cámara

Publicado: 19 Jun 2010, 18:15
por BasicOs
Primeramente, debes aceptar que no lees en profundidad, o sea que por favor, parate y lee esto si lo deseas(cada vez estamos acostumbrados a leer menos debido a internet que tiene tanto información): :smt006 :smt006 :smt007 :smt007

No hay q interpretar ningun problema, simplemente que debes ser un poco más cuidadoso y algo más reflexivo, para evitar perder tu tiempo haciendo cosas que nunca encuentras solución ya que no REFLEXIONAS sobre el código que escribes o escriben.
Recuerda que hay que buscar en el foro antes de preguntar, primero porque es una norma, y luego por otras razones como para no multiplicar las mismas preguntas, ya que hay que "trabajarlo" un poco buscando antes de preguntar, etc.., etcc...
Esto es en este foro y te lo dicen en las normas de todos los foros de cualquier temática, para evitar meter mucha paja o spam, que luego no deja a los que quieran responder tiempo para responder a las preguntas nuevas o que son más interesantes, o aburren al que lee o al que responde.
El tema es amenizar en lo posible las intervenciones de todos para participar cordialmente. Pero vaya eso no es nada nuevo ya lo sabias :smt008 :smt008

Tu respuesta esta en el enlace que has puesto en ya en tu intervención de tu post que es este

Lo he puesto tan sencillo para que cualquiera pueda entenderlo, verás dos códigos, el primero de PixelGetColor() es super mega facil, y se ve como puedes enseñar al programa el color con solo dedicarle 5 minutos a leer el código, con lo cual tu pregunta de
Jonny escribió: Se trataba de comprobar si había oscuridad, para mostrar un jpg, un mensaje ... o algo (el fin era detectar la oscuridad), y aquí viene una duda.
¿Como detectaría con PixelGetColor si realmente hay oscuridad? Porque comprobar si un pixel es negro, ni siquiera unos cuantos, no creo que sea la solución jeje.. A mí se me ocurre, comprobar toda la ventana de visualización de la cámara y si todos los píxeles son negros (toda la ventana es negra) hay oscuridad.¿que os parece? ¿Se os ocurre otra forma de detectar que realmente haya oscuridad?.

No tiene sentido si hubieras comprendido o leido las pocas lineas de código que publiqué en el mensaje, incluso tienes un segundo programa más perfeccionado. :smt021 :smt021
La única manera de llegar a ser un buen programador es prestar atención al código, reflexionar y jugar o experimentar con el código, y poner un poco más de interés, y no escribir siempre algo como esto:
Jonny escribió:Sigo trabajando en ello, jejeje.
cuando NUNCA MUESTRAS ningún código que demuestre que nisiquiera le has dedicado unos minutos a escribir código, como tu sabes no vamos a hacer tu código, sino si a ayudarte a hacerlo. Y por favor, deja de publicar tantas palabras y publica algo de código de vez en cuando, ya que esto es un doble sentido, nosotros te ayudamos y debes sentirte moralmente en reciprocidad con todos los que escriben, y "devolver" si lo deseas, un poco de la ayuda que es la misma que damos. :smt024 :smt017 :smt034 :smt034 :smt034 recuerda que la época del código cerrado, y MS con ideologías "egoistas" está desapareciendo. Hay que ser más generoso con el código abierto, open-source, todo está en la web para la humanidad que lo desee. Es una nueva era, del conocimiento abierto para la humanidad.

Te digo que tampoco hay problema, pero es bueno para centrar un poco, que aquí estamos por que lo deseamos sin obligación a ayudar a quien lo desee, pero es bonito y amable participar en los dos sentidos (si lo deseas claro), solo es algo de reciprocidad normal en la vida misma en la casa en que vivas y en todos lados.

Que conste que esto se habla en publico porque no hay nada que esconder y centrar un poco las intervenciones en el foro en ese sentido, para que no degenere en situaciones extrañas, y recordar las normas formales del foro, e informales de ayuda mutua Todos somos seres humanos y también nos equivocamos. :smt009 :smt009

Comentar que así se puede cambiar el sentimiento de todos los que participamos en el foro en un sentido no de inutilidad "de hablar con las paredes", sino de una retroalimentación, como hacen muchos usuarios, hoy una idea por ti, y mañana otro idea por el otro...
Estoy seguro que no hay intención y que tu puedes cuidar un poco las maneras, y hacer algo por los demás que estamos ayudando sin compromiso. :smt024
"O sea la moraleja es, si quieres que te ayudemos a aprender programar, dejate ayudar y sigue con cariño lo que se escribe" y así NO nos valoraras menos, sino más, y nos sentiremos mejor con esa retroalimentación. :smt035 :smt035
Recuerda que no cobramos por ello y q no nos tienen contratados.

Creo que representando a todos los users/mods/espec., agradezco a todos los usuarios/Mods/especialistas etc, sus participaciones y colaboraciones, y sus códigos fantásticos que hacen que funcionen nuestras neuronas un mínimo para pensar en más utilidades y nuevos códigos fantásticos que podamos imaginar para nosotros o para los demás, que nos ayuden a aprender y progresar en la programación, social, educativa, social-económico, y personalmente, para cada objetivo personal. :smt040 :smt040 :smt040

Salu22:)

Re: OCR con cámara

Publicado: 20 Jun 2010, 23:27
por Chefito
Totalmente deacuerdo con BasicOs.

Jonny, no es por echarte la bronca pero tienes una manía que a mi personalmente no me gusta :smt012 . Eso de preguntar continuamente y no mostrar nada de código (eso hace pensar que no intentas nada y que esperas que otro te lo haga) queda bastante feo.
Yo ya te he echado en cara estas cosas alguna vez. Te he dicho que te fijases en el código porque algunas de tus preguntas se podían resolver muy facilmente con lo que ya se había posteado.
Yo mismo he resuelto muchas de tus dudas. Yo no te digo que lo hagas ya que no lo sabes, pero puedes intentar hacer algo aunque solo sea un poco de código. Y si no sabes nada, pues no hagas nada. Pero si te hacen algo y tienes más dudas, intenta aplicarlo sobre lo que se haya echo. Aunque solamente sea un poco.
Si no haces esto va a dar la impresión de que no has intentado nada y que esperas que te resuelvan todo el código sin dar un palo al agua.

Saludos.