angelanddelus100
Messages postés12Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention15 juillet 2007
-
10 juil. 2007 à 14:31
angelanddelus100
Messages postés12Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention15 juillet 2007
-
11 juil. 2007 à 17:59
Bonjour à tous,
Je dois developper un petit logiciel qui réalise ces fonctions
Lister les drivers des webcams et caméras installé le pc
Détecter les sources vidéo branchées sur l'ordinateur
Sélectionner la source vidéo à capturer
Configurer les paramètres de capture (débit images, format RGB24, I420, Résolution)
Lancer la capture vidéo
Découper la vidéo pour obtenir une Résolution carré
Redimensionner les images en 12 par 12 pixels
Appliquer un filtre noir et blanc à l'image
Pour appliquer les différents filtres sur mes images j'utilise la librairy windows system drawing. Mon programme fonctionne correctement mais au bout de quelque minutes il bug...
Message d'erreur:
Une exception non gérée du type 'System.UnauthorizedAccessException' s'est produite dans Microsoft.VisualBasic.dll
Informations supplémentaires : Accès refusé.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
La boucle de capture est la suivante et je pense qu'elle est la cause de cette erreur. Etant débutant je n'arrive pas à comprendre pourquoi (J'espere obtenir un petit d'aide pour comprendre ce probleme Merci a tous) :
Private
Sub
mWBCStream_Streamed(
ByRef
pBitMap
As
System.Drawing.Bitmap)
Handles
mWBCStream.Streamed
Compte = Compte + 1
picCur.Image = pBitMap
picCur.SizeMode = PictureBoxSizeMode.StretchImage
If
Compte = CompteRef
Then
'CompteRef = Nombre de capture de pBitMap
Compte = 0
picCur.Image.Save(FileA)
Img1.LoadFile(FileA)
''Application du filtre à l'image (couperImage)
Img1 = R11.Apply(Img1) '
''Création conteneur pour l'image à manipuler
Img2 = Img1
'Application du filtre à l'image (redimensionnerImage)
Img2 = R22.Apply(Img2)
'Verification de l'existance et destruction de la variable FileB
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 11 juil. 2007 à 14:37
Je me suis très mal exprimé, mais mes pistes sont certainement moins mauvaises qu'elles en ont l'air. C'est la méthode basique quand on a ce genre de problème et que le débugueur ne s'en sort pas.
Il faut que tu localises la ligne de ton code qui est la dernière executée avant le plantage. Tu ne peux pas utiliser de points d'arrêt vu que le plantage à lieu au bout de plusieurs minutes. Il faut donc que tu fasses des genres, de "coucou je suis passé par là" (Assez utilisés quand on débute en C avec printf, et probablement encore très utilisés en php.).
Quand ça planterat, tu sauras que le problème à lieu entre le dernier message qui s'est affiché, et le suivant qui n'a pas pu avoir lieu.
Genre :
Mon programme()
while true
Procedure1()
Procedure2()
end while
End Mon programme
Procedure1()
Ecrire("D1");
...
...
Ecrire("F1");
end Procedure1
Procedure2()
Ecrire("D2");
...
...
Ecrire("F2");
end Procedure2
Ca affichera par exemple :
D1
F1
D2
F2
D1
Et là, tu sais que c'est la 1 qui plante. Et tu remet en place tes Ecrire pour te rapprocher de l'erreur par étapes successives.
Long et chiant, certe, mais si tu trouves rien d'autre, c'est tout ce qu'il te reste.
angelanddelus100
Messages postés12Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention15 juillet 2007 11 juil. 2007 à 17:59
Merci beaucoup rt15 pour ton aide, je pense qu'il y avait bien erreur d'écrasement de variable quelque part dans mon programme. J'ai contourné ce problème en utilisant un thread de manière à alléger ma boucle principale de capture. Maintenant tout fonctionne bien a part quand je quitte mon programme lol (j'ai plus de bug pendant son fonctionnement c'est déjà pas mal) ... Mais ne t'inquiète pas tu t'es très bien exprimé et je te remercie encore une fois pour n'aide.