Pointeur rawdata bitmap

gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010 - 22 août 2010 à 17:03
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010 - 31 août 2010 à 18:54
Bonjour Bonjour

j'aurais besoin de votre aide pour la classe bitmap :)

j'ai une dll coder en c++ de traitement d'image qui me demande en paramètre un IntPtr.

moi j'ai fait une classe qui me permet de récupérer une image de ma webcam en bitmap.

je voudrais savoir comment récupérer le pointeur des rawdata de mon bitmap.

cordialement
merci

ps : j'ai entendus parler de DIB section mais je ne suis sûre de rien

7 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
22 août 2010 à 19:59
Bonjour

L'objet Bitmap du C# possede une méthode GetHbitmap() qui retourne un IntPtr
qui il me semble est un Handle ou HBITMAP en C++

Bob
C# is amazing, enjoy it!
0
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010
23 août 2010 à 21:54
merci j'avais deja vue, mais ca ne marche pas ...

il me sort l'erreur

L'exception System.DllNotFoundException n'a pas été gérée par le code utilisateur
Message=Impossible de charger la DLL 'BarcodeDLL.dll': Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application pourrait résoudre ce problème. (Exception de HRESULT : 0x800736B1)
Source=Barcodereader
TypeName=""
StackTrace:
à Barcodereader.DllManager.BarCodeDLL.BarCodeReader(IntPtr im_data, BITMAPINFOHEADER im_size)
à Barcodereader.Form1.monBarCodeReader() dans T:\Visual Studio 2010\Projects\Barcodereader\Barcodereader\Form1.cs:ligne 240
à Barcodereader.Form1.takepictureBox1(PictureBox Frame) dans T:\Visual Studio 2010\Projects\Barcodereader\Barcodereader\Form1.cs:ligne 114
à DirectX.Capture.Capture.OnCaptureDone()
InnerException:
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
24 août 2010 à 18:32
Bonjour

Vu le message d'erreur, es-tu certain que le probleme vienne du parametre?
en General une exception DLLNotFound indique que la DLL en question n'a pas été trouvée, et non pas qu'elle s'est plantée ou que le parametre passé n'est pas du type attendu.
Est-ce que la DLL est bien dans le même repertoire que ton executable?


Ps, vu la trace et les infos que tu donnes, il semblerait que tu essaies de faire un scanner de code-barre avec une webcam.
Je me suis cassé les dents sur ce type d'utilitaire, j'ai fais un décodeur de codebarre à partir d'image en C# qui fonctionne bien, mais dès que je l'associe avec une webcam il ne fonctionne pas, je pense que ma webcam n'a pas la qualité requise.
Si tu y arrives, peux-yu me laisser un message ?

Bob
C# is amazing, enjoy it!
0
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010
25 août 2010 à 22:45
j'ai déjà réussi a en faire un qui marche bof

et j'en fait une deuxième qui j'espère marchera mieux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010
29 août 2010 à 15:58
j'ai tjr pas réussi a faire ce fichu truc!!

la DLL est bien dans le dossier de mon exécutable...
0
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010
29 août 2010 à 17:03
c bon ca marche mais je ne sais pas pk ...

maintenant j'ai un problème de lecture écriture de la mémoire

le message :

L'exception System.AccessViolationException n'a pas été gérée
Message=Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
Source=Barcodereader
StackTrace:
à Barcodereader.DllManager.BarCodeDLL.BarCodeReader(IntPtr im_data, BITMAPINFOHEADER im_size)
à Barcodereader.Form1.monBarCodeReader() dans T:\Visual Studio 2010\Projects\Barcodereader\Barcodereader\Form1.cs:ligne 240
à Barcodereader.Form1.button4_Click(Object sender, EventArgs e) dans T:\Visual Studio 2010\Projects\Barcodereader\Barcodereader\Form1.cs:ligne 219
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
à System.Windows.Forms.Application.Run(Form mainForm)
à Barcodereader.Program.Main() dans T:\Visual Studio 2010\Projects\Barcodereader\Barcodereader\Program.cs:ligne 19
à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
à System.Threading.ThreadHelper.ThreadStart()
InnerException:




mon code qui concerne le pointeur :

 
public IntPtr p_im;
p_im = vm1.GetHbitmap();
bool isQR = DllManager.BarCodeDLL.BarCodeReader(p_im, im_info);

0
gearmat Messages postés 12 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 août 2010
31 août 2010 à 18:54
bah déjà la on a fait une connerie ...

j'ai demander a la personne qui a fait la DLL ce qu'il en pensais
et il ma dit que le intPtr du barcode reader nécessite un pointeur sur le tableau de données/pixels de la bitmap, et non le handle de celle ci.


j'ai tester la fonction GetBitmapBits mais je n'y comprend pas grand choses
0
Rejoignez-nous