English   winter   modern   blood   old   buttercup 
Scubabob - Underwater Photography

Navigazione



Iniziative

Riprendiamoci Telecom Italia!

Basta! Parlamento pulito

passaparola
Tesina universitaria di Teoria e Tecniche di Elaborazione Immagini

Riconoscimento immagini di pallet (Luglio 2000)

È la prima applicazione che ho scritto in Presentation Manager per OS/2. Non mi piace scrivere interfacce grafiche, preferisco programmi di altro genere. Non aspettatevi grandi cose, anzi...

Il programma è stato scritto in Borland C++ V1.5 per OS/2 ed è suddiviso in due parti: l'interfaccia grafica e le funzioni per operare con le immagini.

Dalla data di consegna non l'ho più toccato...


10/01/2004
Oggi, dopo alcune richieste, ho provato a compilare core.c e core.h sotto Windows. A parte qualche problemino sembra funzionare con le seguenti limitazioni:
  • Visual C++ 6.0 segna tutti i cast impliciti;
  • l'allineamento delle strutture non deve essere a 8 byte (per tagliare la testa al toro l'ho impostato a 1 byte), mem.h in windows si chiama memory.h).
Il risultato è una applicazione console scritta (come al solito) in gran fretta:

/*
   PalletConsole Test

   Autore : Mirco Miranda
   Data   : 10/01/2004
   Licenza: GPL

   Descrizione: legge il file BMP passato in linea di comando,
   vi applica l'algoritmo Canny Edge Detector e
   salva il risultato nel file canny.bmp

   Note:

   1) questo semplice programma e` stato scritto per
   testare le librerie core.c e core.h V0.3 sotto Windows

   2) bisogna impostare l'allineamento delle strutture dati a
   1 byte (forse va bene anche 2), altrimenti e` un macello.

   3) in VC mem.h si chiama memory.h

   4) ci sono un sacco di cast impliciti... VC di default
   li segnala tutti (quindi una marea di warning con
   le opzioni di compilazione di default)

   5) si, le librerie le riscriverei da zero...
*/

#include "core.h"

int main(int argc, char **argv)
{
   BMPIMAGE bmp;
   FILE *rd, *wr;

   puts("EDGE Detection Demo by Mirco Miranda");
   puts("");
   puts("Semplice programma per l'edge detection che usa core.c e core.h del progetto pallet per OS/2.");
   puts("Scritto per testare le librerie anche sotto Windows.");
   puts("");

   if(argc != 2) {
      puts("Specificare il file BMP da aprire");
      return(-4);
   }

   rd = fopen(argv[1], "rb");

   if(rd) {
      // teoricamente inutili
      bmp.bmph = NULL;
      bmp.data = NULL;
      bmp.ppal = NULL;

      // carico l'immagine
      BmpfReadBitmap(rd, &bmp);

      fclose(rd);

      // per lavorare con canny devo avere un immagine 24bit
      if(bmp.bmph->cBitCount != 24) {
         puts("L'immagine deve essere a 24 bit");
         return(-1);
      }

      // porto l'immagine in bianco e nero (i bordi
      // altrimenti risultano di colori diversi)
      FltCol2Gray(bmp.bmph, bmp.ppal, bmp.data);

      // applico l'edge detector Canny
      FltCannyEdge(bmp.bmph, bmp.ppal, bmp.data);

      // salvo l'immagine
      wr = fopen("canny.bmp", "wb");
      if(wr) {
         BmpfWriteBitmap(wr, &bmp);
         fclose(wr);
      }
      else {
         puts("Errore scrittura");
         return(-2);
      }
   }
   else {
      puts("Errore apertura file");
      return(-3);
   }

   // fine, teoricamente OK
   return(0);
}


Valid HTML 4.01! Valid CSS!  Copyright © 1999-2009 Mirco Miranda 
Tutti i diritti riservati.
  Scrivi