nadine2511
Messages postés10Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention18 juillet 2004
-
10 juin 2004 à 10:18
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009
-
10 juin 2004 à 14:42
Bonjour à tous,
j'ai écrit un code permettant de résupérer la couleur des pixels de l'image et la transformation de cette image en niveau de gris et son affichage dans une autre picture box. Derrière, je veux réaliser un seuillage automatique (c'est pour ca qque je voudrais avoir mes pixels dans un tableau) mais ici il n'y ait pas encore car j'ai des problèmes avec PSet, à moins que ce ne soit autre chose. Mais une fois sur 2 VB me dit "Nombre d'arguments incorrects ou affectation de propriété incorrecte" pour PSet. Et quand ca marche, le résultat est seulement constitué d'une partie de l'image initiale.
Picture1 et Picture2 ont les mêmes dimensions et sont toutes les 2 des pictures box.
Voici mon code:
Public Function CouleurPixel(Coul As Long)
Dim Reste As Double
Form1.Show
blue = Int(Coul / 65536)
'Print blue
green = Int((Coul - (65536 * blue)) / 256)
'Print green
red = Coul - ((blue * 65536) + (green * 256))
'Print red
Reste = (blue + red + green) Mod 3
Reste = Reste / 3
'Print Reste
CouleurPixel = (blue + red + green) / 3
If (Reste > 0.5) Then
CouleurPixel = CouleurPixel + (1 - Reste)
Else
CouleurPixel = CouleurPixel - Reste
End If
End Function
------------------------------------------------
Private Sub Form_Load()
Dim pixel(269, 461) As Long, val As Long
Picture1.Picture = LoadPicture("c:\image.bmp")
Form1.Show
With Picture1
.ScaleMode = vbPixels
.Picture = Picture1.Image
End With
SavePicture Picture1.Image, "C:\imageinitiale.bmp"
With Picture2
.ScaleMode = vbPixels
.AutoRedraw = True
.AutoSize = True
End With
' récupération des couleurs de chaque pixel de l'image
For i = 0 To Picture1.ScaleHeight-1
For j = 0 To Picture1.ScaleWidth-1
pixel(i, j) = CouleurPixel(Picture1.Point(i, j))
Next
Next
' création et affichage d'une image à niveaux de gris
For i = 0 To Picture1.ScaleHeight-1
For j = 0 To Picture1.ScaleWidth-1
val = RGB(pixel(i, j), pixel(i, j), pixel(i, j))
Picture2.PSet (i, j), val
Next
Next
End Sub
Si quelqu'un a une idée, merci de me venir en aide parce que là je patauge complètement.
Merci