schweini2409
Messages postés5Date d'inscriptionsamedi 6 novembre 2010StatutMembreDernière intervention14 décembre 2010
-
13 déc. 2010 à 17:36
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
18 déc. 2010 à 11:29
Salut,
Je viens de coder un code pour rechercher la position d'un motif particulier dans un image.
Pourtant, j'ai eu une erreur 6 : depassement du capacite.J'arrive pas à éliminer.
Quelqu'un peut m'aider ?
Merci beaucoup
Voici le code
Le principe c'est je converse l'image vers une matrice binaire (noir 1, blanc 0) Et puis je fais balader la matrice du motif sur la matrice de l'image pour trouver la position ou on a la différence minimum
Dim TailleX, TailleY, TailleX1, TailleY1 As Long
Dim Mat() As Byte
Dim Mat1() As Byte
Dim Mat2() As Byte
'recherche le motif particulier
Private Sub recherchemotif(Mat() As Byte, Mat1() As Byte)
Dim i, j As Integer
Dim S As Integer
Dim Sm, m, n, a, b, k, l As Byte
ReDim Mat2(TailleX, TailleY) As Byte
Sm = 1000
i = 0
j = 0
S = 0
While (i < 50)
While (j < 50)
k = i
l = j
For m = 0 To TailleX
For n = 0 To TailleY
Mat2(m, n) = Mat1(k, l) - Mat(m, n)
l = l + 1
Next n
k = k + 1
l = j
Next m
For m = 0 To TailleX
For n = 0 To TailleY
S = S + Mat2(m, n)
Next n
Next m
If (S < Sm) Then
a = i
b = j
S = Sm
Else: S = 0
End If
j = j + 1
Wend
i = i + 1
j = 0
Wend
End Sub
Private Sub Command1_Click()
Call recherchemotif(Mat(), Mat1())
End Sub
Private Sub Form_Load()
Picture1.Picture = LoadPicture("C:\Users\Tu Be\Desktop\PROJET INFO\Images-test\positioneur.bmp")
Picture2.Picture = LoadPicture("C:\Users\Tu Be\Desktop\PROJET INFO\Images-test\test.bmp")
TailleX = Picture1.Width
TailleY = Picture1.Height
TailleX1 = Picture2.Width
TailleY1 = Picture2.Height
Call ConverseMatrix(Picture1, Mat())
Call ConverseMatrix(Picture2, Mat1())
End Sub
'image vers matrice
Private Sub ConverseMatrix(Picture As PictureBox, Mat() As Byte)
Dim i, j, m, n As Long
ReDim Mat(TailleX, TailleY) As Byte
m = 0
n = 0
For i = 1 To TailleX
For j = 1 To TailleY
If Picture.Point(j, i) = RGB(0, 0, 0) Then
Mat(m, n) = 0
Else: Mat(m, n) = 1
End If
n = n + 1
Next j
m = m + 1
n = 0
Next i
End Sub