je recois une image d'une caméra en tableau de byte[].
Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK
fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci
et bien j'ai une erreur "Parameter is not valid"
Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette
image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou
alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui
ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Remi THOMAS
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[].
Je souhaite travailler en C# du coup je traduis un peu les sources de
monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci
et bien j'ai une erreur "Parameter is not valid"
Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes
cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?"
ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image
qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour,
Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le
néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
Aurel
Effectivement, Dieu bénisse ton poulet... Bon alors au niveau du code C++ que j'essaie de recréer, ca donne
void CDemoDlg::OnGetImage() { DWORD dwLength;
m_status.Format("Run Get Image"); UpdateData(FALSE);
if(SRVP_FindDevice()) { if(SRVP_GetImage(pBuf,&dwLength)) //pBuf est le pointeur byte* qui recupere les info {
Y422RGB24(pBuf,RgbBuf); //Fonction qui transforme le signal YUV422 en RGB 24 bits, pBuf devient rgbBuf
if (dwLength==IMG_WIDTH*IMG_HEIGHT*2) { bShowBuffer = TRUE; Invalidate(FALSE); SaveImage(0,0); } else bShowBuffer = FALSE; } else { m_status.Format("Not support in preview mode"); UpdateData(FALSE); }
} else { m_status.Format("Camera Not Connected"); UpdateData(FALSE); } }
Une fois que rgbBuf est initialisé (après Y422RGB24, il sera dessiné par DrawDibDraw dans l'evenement OnPaint
Voila pour le code C++, je charge ma dll et la fonction GetImage en C# comme suit C++ -> SRVP_API BOOL SRVP_GetImage(BYTE *pBuf, DWORD *pLength); C# [DllImport("SRVP.dll",EntryPoint="..."] public static extern unsafe bool SRVP_GetImage(byte *pBuf, UInt32 *pLength);
et dans mon code tout simplement. uint dwLength = 0; byte[] Buf = new Byte[1024*768*2]; byte[] rgbBuf = new Byte[1024*768*3] fixed(byte* pBuf = Buf){ if(maClasseDll.SRVP_GetImage(pBuf,&dwLength)){ fixed(byte* pRgbBuf = rgbBuf){ maClassedeFonctionsCompiléduC++.Y422RGB24(pBuf,pRgbBuf); using(MemoryStream ms = new MemoryStream(rgbBuf,0,rgbBuf.Length){ ms.Write(rgbBuf,0,rgbBuf.Length); Image newImage = Image.FromStream(ms); // Et la ca plante "Parameter is not valid" } } } }
Voila il y a tout, je pense. J'ai du utiliser les pointeurs en unsafe en C# car avec ref ou out, ca ne marchait pas, je n'obtenai pas de réponse de ma fonction. Pas d'exception, mais pas de réponse, l'application etait bloquée.
Merci pour tout ces poulets morts... Si qqn a une tite idée.
Merci
Aurel
----- Original Message ----- From: "Remi THOMAS" Newsgroups: microsoft.public.fr.dotnet.csharp Sent: Friday, December 22, 2006 7:23 AM Subject: Re: DrawDibDraw equivalent C#
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
"Remi THOMAS" a écrit dans le message de news: OwF%
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
Effectivement, Dieu bénisse ton poulet...
Bon alors au niveau du code C++ que j'essaie de recréer, ca donne
void CDemoDlg::OnGetImage()
{
DWORD dwLength;
m_status.Format("Run Get Image");
UpdateData(FALSE);
if(SRVP_FindDevice())
{
if(SRVP_GetImage(pBuf,&dwLength)) //pBuf est le pointeur byte* qui
recupere les info
{
Y422RGB24(pBuf,RgbBuf); //Fonction qui transforme le signal YUV422 en
RGB 24 bits, pBuf devient rgbBuf
if (dwLength==IMG_WIDTH*IMG_HEIGHT*2) {
bShowBuffer = TRUE;
Invalidate(FALSE);
SaveImage(0,0);
}
else bShowBuffer = FALSE;
}
else
{
m_status.Format("Not support in preview mode");
UpdateData(FALSE);
}
}
else
{
m_status.Format("Camera Not Connected");
UpdateData(FALSE);
}
}
Une fois que rgbBuf est initialisé (après Y422RGB24, il sera dessiné par
DrawDibDraw dans l'evenement OnPaint
Voila pour le code C++, je charge ma dll et la fonction GetImage en C#
comme suit
C++ -> SRVP_API BOOL SRVP_GetImage(BYTE *pBuf, DWORD *pLength);
C#
[DllImport("SRVP.dll",EntryPoint="..."]
public static extern unsafe bool SRVP_GetImage(byte *pBuf, UInt32 *pLength);
et dans mon code tout simplement.
uint dwLength = 0;
byte[] Buf = new Byte[1024*768*2];
byte[] rgbBuf = new Byte[1024*768*3]
fixed(byte* pBuf = Buf){
if(maClasseDll.SRVP_GetImage(pBuf,&dwLength)){
fixed(byte* pRgbBuf = rgbBuf){
maClassedeFonctionsCompiléduC++.Y422RGB24(pBuf,pRgbBuf);
using(MemoryStream ms = new MemoryStream(rgbBuf,0,rgbBuf.Length){
ms.Write(rgbBuf,0,rgbBuf.Length);
Image newImage = Image.FromStream(ms);
// Et la ca plante "Parameter is not valid"
}
}
}
}
Voila il y a tout, je pense.
J'ai du utiliser les pointeurs en unsafe en C# car avec ref ou out, ca ne
marchait pas, je n'obtenai pas de réponse de ma fonction.
Pas d'exception, mais pas de réponse, l'application etait bloquée.
Merci pour tout ces poulets morts...
Si qqn a une tite idée.
Merci
Aurel
----- Original Message -----
From: "Remi THOMAS" <remi@xtware.com>
Newsgroups: microsoft.public.fr.dotnet.csharp
Sent: Friday, December 22, 2006 7:23 AM
Subject: Re: DrawDibDraw equivalent C#
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[].
Je souhaite travailler en C# du coup je traduis un peu les sources de
monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci
et bien j'ai une erreur "Parameter is not valid"
Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes
cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?"
ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image
qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour,
Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien,
le néant, je n'arrive pas à retrouver une seule ligne de code de ton
projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
"Remi THOMAS" <remi@xtware.com> a écrit dans le message de news:
OwF%238GZJHHA.3424@TK2MSFTNGP02.phx.gbl...
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[].
Je souhaite travailler en C# du coup je traduis un peu les sources de
monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci
et bien j'ai une erreur "Parameter is not valid"
Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes
cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?"
ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image
qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour,
Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien,
le néant, je n'arrive pas à retrouver une seule ligne de code de ton
projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Voila pour le code C++, je charge ma dll et la fonction GetImage en C# comme suit C++ -> SRVP_API BOOL SRVP_GetImage(BYTE *pBuf, DWORD *pLength); C# [DllImport("SRVP.dll",EntryPoint="..."] public static extern unsafe bool SRVP_GetImage(byte *pBuf, UInt32 *pLength);
et dans mon code tout simplement. uint dwLength = 0; byte[] Buf = new Byte[1024*768*2]; byte[] rgbBuf = new Byte[1024*768*3] fixed(byte* pBuf = Buf){ if(maClasseDll.SRVP_GetImage(pBuf,&dwLength)){ fixed(byte* pRgbBuf = rgbBuf){ maClassedeFonctionsCompiléduC++.Y422RGB24(pBuf,pRgbBuf); using(MemoryStream ms = new MemoryStream(rgbBuf,0,rgbBuf.Length){ ms.Write(rgbBuf,0,rgbBuf.Length); Image newImage = Image.FromStream(ms); // Et la ca plante "Parameter is not valid" } } } }
Voila il y a tout, je pense. J'ai du utiliser les pointeurs en unsafe en C# car avec ref ou out, ca ne marchait pas, je n'obtenai pas de réponse de ma fonction. Pas d'exception, mais pas de réponse, l'application etait bloquée.
Merci pour tout ces poulets morts... Si qqn a une tite idée.
Merci
Aurel
----- Original Message ----- From: "Remi THOMAS" Newsgroups: microsoft.public.fr.dotnet.csharp Sent: Friday, December 22, 2006 7:23 AM Subject: Re: DrawDibDraw equivalent C#
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.
Rémi
"Remi THOMAS" a écrit dans le message de news: OwF%
"Aurel" écrivit
Bonjour,
je recois une image d'une caméra en tableau de byte[]. Je souhaite travailler en C# du coup je traduis un peu les sources de monSDK fourni en C++.
Il s'avère que lorsque je veux charger ce tableau comme ceci et bien j'ai une erreur "Parameter is not valid" Alors qu'a ce stade la, en C++ ils arrivent a afficher sans problèmes cette image avec DrawDibDraw.
Ma question est: "Il y a t'il une équivalence pour dessiner directement?" ou alors "Ou est la différence entre ces 2 méthodes ? Serait ce mon Image qui ne supporte pas certaines données que DrawDibDraw accepte...?"
Enfin si qqn a compris et souhaite m'aider qu'il me fasse signe.
Merci
A+
Aurel
Bonjour, Je viens de sacrifier un poulet pour lire dans ses entrailles, mais rien, le néant, je n'arrive pas à retrouver une seule ligne de code de ton projet.
4 lignes de code peuvent nous aider à comprendre ton problème.