Programación General > Visual Basic 6.0 e inferiores
Ocx Visual Basic
ezequielminor:
para comparar los elementos de un arreglo solo basta con recorrerlo y compararlo con el 2do arreglo . por ejemplo
dim MiArreglo(15) as string
dim Numero as integer, i as integer
dim Coincidencias as integer
Numero = 0
Coincidencias = 0
For i = 0 to 15
For Numero = 0 to 15
if Numero = MiArreglo(i) Then
Coincidencias = Coincidencias + 1
End If
If Coincidencias > 1 Then
MsgBox("Se Repite el numero" & Numero)
Next Numero
Next i
no estoy muy seguro de su funcionamiento, cuando vuelva a tener contacto con mi computadora , te traigo un codigo fuente :hola:
Jeshu:
Muchas gracias, algo asi es lo que necesitaba...
Besos.....
Nebire:
--- Cita de: "Brroz" --- Hola riciar.
La forma que se me ocurre para resolver esto puede hacerse lenta y consumidora de recursos, pero...
En principio dices que tienes cierta imagen que debes usar como patrón para localizarla posteriormente. Ok, yo almacenaría esa imagen en una matriz de 'Ancho , Alto dimensiones' (o si lo prefieres de una dimensión Ancho x Alto) de tipo Long. A continuación mediante un bucle recorrería la imagen patrón 'escaneando' el valor de cada punto y asignando su color al respectivo punto de la matriz. Para averiguar el color de cada punto usa la función Point.
A continuación recorre la imagen que quieres comparar buscando la coincidencia con los correspondientes elementos de la matriz. Una vez que encuentres coincidencia con el primer elemento, continua comprobando puntos hasta el ancho del patrón. Si en algun momento deja de haber coincidencia, continúa con el escaneo, si no, al llegar al ancho del patrón, comprueba una nueva línea comenzando en la fila que coincidió de primera.
No sé si no me habré embrollado un poco explicando esto último, pero seguro que tomas la idea rápidamente. Ánimo que implementar esto no debe ser complicado (otra cosa es que el resultado pueda ser exasperantemente lento).
Te pondría un código de ejemplo, pero es que ahora en breve me voy a casa. Si tal y tienes dificultades en otro momento hablamos.
Chau.
--- Fin de la cita ---
aunque es eficaz es una forma lenta, demasiado lenta, por de pronto se me ocurre como ganarle velocidad usando el mismo algoritmo que describes. Lo comento:
Se supone que la coincidencia de patrón es igual, ya que si no es preciso usar otro algoritmo.
Lo 1º indicar que la API getPixel es más rápida... que point.
Cuando encuentras una coincidencia del primer punto de la 1ª línea, lo que debes hacer no es buscar el siguiente, sino x siguientes más allá si también aparece, ahora busca x líneas más abajo, es decir hallnado 1 coincidencia marcas buscar dos coincidencias más en un área cuadrada (los 3 puntos deben formar un triángulo), si hay éxito comprueba nuevamente otros 3 puntos en distancias aleatorias , la probabilidad de que sean exactos es muy baja (salvo que haya pocos colores, es decir un patrón con poco contraste, mucho brillo, etc...), si el nuevo triángulo coincide, entonces examínalo desde principio a fin de corrido como indicas, si falla el 2º triángulo, el primero o tan sólo el 2º punto, fíjate que con sólo 2,3 ó 6 puntos puedes descartar un área cuadrada... sin necesidad de recorrerla punto a punto. entonces una imagen de pongamos 800x600 la puedes recorrer en apenas unos miliSg, frente a los varios segundos (10-30) que podría suponer revisar una imagen completa píxel a píxel con point.
Navegación
[*] Página Anterior
Ir a la versión completa