2009-02-15 7 views
1

J'essaye de faire un ocr par moi-même en C#. Je suis originaire de Java et c'est mon premier "projet" avec C#Comment puis-je modifier un bitmap et l'utiliser plus tard sans stocker ou dessiner

Donc je sais, comment vous pouvez faire différents ColorMatrizes pour dessiner un bitmap traité dans votre application. Je les ai aussi, mais je veux utiliser l'image traitée pour mieux analyser une image.

Ce sont mes méthodes pour obtenir un ImageAttribute

public static ImageAttributes ToGrayscale(Bitmap b) 
public static ImageAttributes ToNegative(Bitmap b) 
public static ImageAttributes ToSepia(Bitmap b) 
public static ImageAttributes SetBrightness(Bitmap b, float Brightness) 
public static ImageAttributes SetContrast(Bitmap b, float Contrast) 

Ceci est ma méthode pour dessiner

Graphics g = this.CreateGraphics(); 
g.DrawImage(bmp,new Rectangle(0, 0, bmp.Width, bmp.Height), 
      0, 0, bmp.Width, bmp.Height, 
      GraphicsUnit.Pixel, ImageAnalysis.ToGrayscale(bmp)); 
g.Dispose(); 

Voici ce que je veux:

FindLines(setConrast(toGrayscale(bmp),200)) 

Mais je ne trouvais pas méthode pour enregistrer les modifications en permanence sur l'objet bitmap. Peut-être que quelqu'un a fait cela avant et peut me aider

Répondre

3

Au lieu de dessiner à l'écran avec cette

Graphics g = this.CreateGraphics(); 

Vous créez un nouveau bitmap puis vous dessinez sur ce bitmap, en utilisant un objet graphique obtenu comme celui-ci

Bitmap bmpNew = new Bitmap(width, height); 
Graphics g = Graphics.FromBitmap(bmpNew); 
+0

merci, je l'ai fait avant quand j'essayé de dessiner un rectangle sur une bmp la (par exemple lignes de marquage trouvées pour debuggin), mais n'a pas réalisé cela fonctionnerait même .. Merci pour votre aide – Sven