Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Gestire Interazione con immagine

    salve ragazzi sto realizzando un software gestionale in java e adesso ho bisogno di interagire
    con un immagine di questo tipo

    [IMG] Uploaded with ImageShack.us[/IMG]

    cioè voglio che quando clicco su una cella di questa griglia riesco a leggere il suo contenuto (1,2,3,....,)


    Come posso fare ??

    Datemi qualche idea

  2. #2
    Ma l'immagine è solo questa oppure nelle celle ci possono essere anche altri valori e tu devi riuscire a capire quali sono?
    Almeno le celle saranno sempre con le stesse misure?

    Il carattere dei numeri è sempre quello ed i pixel dei numeri sono sempre alla stessa posizione oppure possono essere numeri o lettere di qualsiasi dimensione e forma?

    Se volessi creare un software OCR per quei numeri che sono sempre della stessa forma e con una griglia di quella dimensione sempre divisa come quella nell'esempio, allora non è una cosa difficile... se poi la forma dei caratteri e della griglia cambiano allora la cosa è piu' complessa.
    lolide
    Java Programmer

    Informati

  3. #3
    la forma dei numeri e delle celle è sempre la stessa l' unica cosa che potrebbe cambiare è la dimensione della matrice cioè in alcuni casi potrei avere una matrice 3x3 in altri 5x5 ......

  4. #4
    Basta che hai dei valori costanti su cui fare dei calcoli...
    il modo piu' semplice per procedere secondo me è tenerti una matrice per ogni numero da comparare ogni volta con i pixel delle parti dell'immagine suddivisa calcolandoti le dimensioni in base al tipo di griglia.
    Se il carattere dei numeri come hai detto sono sempre gli stessi, quel font sembra monospaced quindi sei ancora piu' facilitato perchè per ogni numero hai la stessa dimensione della matrice solo che cambia la posizione dei pixel neri su quelli bianchi.
    Apri l'immagine come BufferedImage e tramite getWidth() e getHeight() per i limiti e getRGB(int x, int y) per il colore di ogni pixel ti scorri i pixel dell'immagine come con una matrice.

    Procedi prima creandoti N matrici di N x N unita' (sono sufficienti anche matrici di boolean, tanto ti serve sapere se sono pixel neri o bianchi) per quanti sono i quadrati della griglia, facendo in modo di non comprendere nelle matrici i pixel neri dei bordi.
    Poi in ognuna di queste matrici hai dei valori true per i pixel neri e false se i pixel sono non-neri. Se sai a priori che i numeri sono allineati al centro orizzontalmente ti basta prendere le righe di ogni matrice dalla (meta' dell'altezza della cella) - (meta' dell'altezza del font) a (meta' dell'altezza della cella) + (meta' dell'altezza del font).

    IN poche parole per ognuna di queste celle devi prendere tutti i gruppi di pixel neri delimitati da una riga piena di pixel bianchi. Per ogni cella trovi N matrici corrispondenti agli N numeri nella cella, di stessa altezza e larghezza visto che hanno sempre la stessa forma ed il font e' monospaced.

    Poi ovviamente ti devi tenere una libreria con tutte le matrici di tutti i numeri con cui comparare le matrici rappresentanti i numeri in ogni cella. Se i caratteri come hai detto tu hanno la stessa forma e dimensione è quindi impossibile che lo stesso numero non abbia i pixel nella stessa identica posizione di quello nella libreria.

    Anch'io ho avuto a che fare con una cosa del genere ed ho proceduto semplicemente così senza usare librerie OCR ecc...
    lolide
    Java Programmer

    Informati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.