OCR con cámara

RoBots_Hard: Electrónica, OCR, WebCams, Reconocimiento de objetos, maquinas
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: OCR con cámara

Mensaje por Jonny »

Hola
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?.
Bueno... Podeis interpretarlo como que quiero que me hagais el código, o como era en este caso mi intención; Que simplemente me orientárais para hacer el código de una forma u otra, diciéndome si esa era la forma correcta o podía hacerlo de otra forma:
"Sí, así sería una forma de hacerlo".
(Por ejemplo).

Claro que pondré código, como dice el refrán
Es de bien nacido, ser agradecido
y alguna vez dige por aquí, que no he puesto el código de todo lo que he preguntado, porque no siempre de todo he hecho un programa completo (Tendría más software que Microsoft :P). Muchas cosas, me han servido para aprender, para otras... Pero no es que quiera que me hagais programas para revender, o encerrar el código en una caja fuerte ...

en este caso, no serviría de nada poner el código que tengo hecho del programa (que si lo quereis ver lo pongo sin problema), porque no es practicamente nada, ni os mostraría que haya intentado solucionar el problema que planteo aquí, porque antes de escribir el código realmente importante para detectar la oscuridad con la cámara, he estado mirando como funcionan las funciones Pixel (que no había usado nunca), viendo posts que me recomendaba ver BasicOS... Y todo eso en ratos sueltos (cuando he podido).

Por eso creo que haber puesto
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?.

He hecho algo como esto:

Código: Seleccionar todo

#Include <Array.au3>
#Include <ButtonConstants.au3>
#Include <Color.au3>
#Include <ColorConstants.au3>
#Include <Constants.au3>
#Include <File.au3>
#Include <FileConstants.au3>
#Include <GDIPlus.au3>
#Include <GDIPlusConstants.au3>
#Include <GUIConstants.au3>
#Include <GUIConstantsEx.au3>
#Include <GuiEdit.au3>
#Include <StaticConstants.au3>
#Include <String.au3>
#Include <Timers.au3>
#Include <WebCam.au3>
#Include <WinAPI.au3>
#Include <WinAPIError.au3>
#Include <WindowsConstants.au3>

Global Const $FileName="Cam Reader" ;Nombre del programa.
GUIDelete()
$WinHandle=GuiCreate($FileName, 820, 600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_EX_TOPMOST, $WS_EX_COMPOSITED, $WS_CAPTION))
GuiSetBkColor("123104238", $WinHandle)
$Label1=GuiCtrlCreateLabel("Bienvenido a "&$FileName, 129, 120, 297, 20, $SS_CENTER)
GuiCtrlSetColor(-1, "132112255")
GuiCtrlSetFont(-1, 14, 800, 0, "Verdana")

GuiCtrlSetState(-1, $Gui_Focus)
GuiSetState()

While 1
$MsgEvent=GuiGetMsg()
Select
Case $MsgEvent==$GUI_EVENT_Maximize
$WinMaximize=@SW_MAXIMIZE
Case $MsgEvent==$GUI_EVENT_Minimize
$WinMinimize=@SW_MINIMIZE
Case $MsgEvent==$GUI_EVENT_Restore
$WinRestore=@SW_RESTORE
Case $MsgEvent==$GUI_EVENT_Close
Exit
EndSelect
Wend
...
...
...

Hubiera sido peor, que intentar que me aconsejárais para hacerlo, o decirme si tal y como pensaba solucionar el problema, era la forma correcta, porque alguna vez Chefito, me has dicho también que no ponga códigos inservibles (partes del código).
Para mí, el anterior aunque funcional, es de poca utilidad, en ningún sitio se ve que haya intentado usar la cámara ¿no?.

En cualquier caso, cuando lo tenga funcionando aunque una parte del programa que me aconsejó BasicOS, lo pondré aquí, como dige.

Salu2!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: OCR con cámara

Mensaje por Ximorro »

Como te están dando un poco de caña y yo también te lo he comentado alguna vez no voy a repetirme :smt002

No escribo para seguir con eso, ya está dicho bastante claro, sino para animarte a seguir dando caña al AutoIt y al foro. Prueba esos cambios que te recomendamos, te aseguro que investigar los códigos y hacer más cosas por uno mismo y menos cogiendo de los demás es muy satisfactorio. Me dijiste una vez que te comenté algo de esto que yo lo hacía porque tenía conocimientos de informática y tú no. Pues bueno, por un lado yo no soy ningún Einstein, ¡y también he preguntado mis dudas!, por otro lado ¡no hace falta ser ingeniero para programar en AutoIt!, te recomiendo obtener esos conocimientos desde el principio para trabajar sobre una base sólida.

Me parece que el problema al que te sueles enfrentar es que quieres empezar con programas tremendos, muy complejos con resolución a largo plazo. Creo que deberías hacer, al menos paralelamente, cosas más pequeñas que te permitan ir aprendiendo las cosas básicas de programación en general y de AutoIt en particular (lo de los bucles, estructuras de control, manejo de matrices... esas cosas).
Cuando controles esos puntos te verás haciendo cosas con soltura y por ti mismo. Me parece que adaptas muchos códigos de otros, y con eso se aprende algo, pero se aprende más creando código propio, porque entonces te toca pensar la manera de solucionarlo y te pegas más directamente con ello.
Haz cositas sin GUIs de montonces de controles, que no necesiten DLLs externas, si es posible que no use la API de Windows directamente... experimentos para probar AutoIT en sí mismo.

Al final tendremos que hacer un foro de ejercicios para que la gente practique... :smt027 :smt027

Lo de ver los códigos no es ninguna tontería, hay veces que no respondo consultas porque no se pone nada de código y me tocaría hacerlo yo desde cero, aunque sepa hacerlo si son más de 15 líneas me da pereza. Si me dan algo hecho, aunque no funcione (y es lo típico, por eso estás consultando algo, que no pasa nada porque no funcione), me es más fácil cogerlo y modificarlo para que funcione, respondiendo así a la consulta. Desde luego también huyo de códigos de 200 líneas si no son necesarias para la consulta, si me están diciendo que no me sale un iconito en un botón, borra lo que sobra y deja el código que hace y maneja el botón...

De todas maneras reconozco que soy más de preferir indicar por dónde van los tiros, qué funciones usar, por ejemplo, más que de darlo todo hecho, precisamente porque de esa manera se aprende más.

Así que a programar ¡y no dudes que seguiremos ayudándote con tus dudas!
Última edición por Ximorro el 21 Jun 2010, 09:47, editado 1 vez en total.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder