Definir la resolution d'une webcam avec IAMStreamConfig [Résolu]

bibinutz 32 Messages postés mercredi 13 avril 2005Date d'inscription 13 janvier 2009 Dernière intervention - 9 janv. 2009 à 12:25 - Dernière réponse : bibinutz 32 Messages postés mercredi 13 avril 2005Date d'inscription 13 janvier 2009 Dernière intervention
- 13 janv. 2009 à 15:04
Bonjour,

Voici mon but ! : afficher en plein ecran l'image de ma webcam utilisant la resolution max (1600x1200).
J'arrive à afficher l'image en plein ecran mais uniquement avec la configuration par defaut de la webcam.
J'ai essaye d'utiliser la dll avicap32 mais elle est limite en resolution à 640x480, idem avec la dll wia.
Je me suis donc dirige vers le directX et j'utilise à present la dll DShowNet.
J'arrive à recuperer la resolution à l'aide de la boite de dialogue ShowCapPinDialog. Je voudrais à present ne plus passer par cette boite de dialogue. J'ai effectue des recherches sur internet et j'ai trouve differentes sources mais je n'y arrive toujours pas. J'ai essaye de recuperer les infos avec GetNumberOfCapabilities, GetFormat mais il faut utiliser des pointeurs et il apparait des erreurs comme quoi cela n'est pas possible car c'est du code managé.

Je ne connais pas du tout le directX et je voulais savoir si quelqu'un peut me fournir des pistes ou eventuellement un bout de code.

Merci d'avance.

Stephan.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
bibinutz 32 Messages postés mercredi 13 avril 2005Date d'inscription 13 janvier 2009 Dernière intervention - 13 janv. 2009 à 15:04
3
Merci
Salut,

J'ai trouve une autre solution pour recuperer/modifier la resolution de la camera. J'utilise la dll Directx.capture avec la librairie DShowNET.

Pour modifier la resolution il suffit d'utiliser la methode framesize.

Voici la source qui m'a permis de solutionner mon probleme.

http://www.codeproject.com/KB/directx/directxcapture.aspx

Merci bibinutz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de bibinutz
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 10 janv. 2009 à 00:13
0
Merci
T'as plusieurs solutions.

La plus simple: programmer tout en C++ ;)
La 2nde: créer une DLL C++ managé qui gère le code DirectX en natif et qui te renvoit dans ton programme du code managé.
La 3ème: créer une DLL C++ qui gère le code DirectX et que tu appelle dans ton programme à grand coup de DllImport.
Commenter la réponse de bubbathemaster
bibinutz 32 Messages postés mercredi 13 avril 2005Date d'inscription 13 janvier 2009 Dernière intervention - 10 janv. 2009 à 23:31
0
Merci
Salut,

J'avais pensé à ce genre de possibilités mais je ne savais pas si cela était possible. On est obligé de passer par du code c ou c++ pour contourner le probleme ? Il ni a aucun moyen d'utiliser le C# ?

Donc, pour resumer un peu la situation, si je cree ma propre dll, il y aura une fonction qui me renverrait genre un int de la resolution de ma webcam et si je veux definir la resolution il y aura une fonction ds ma dll qui aura comme argument deux int correspondant à la resolution souhaitee et c'est le code en C++ qui va communiquer avec la webcam ?

Merci.

Stéphan
Commenter la réponse de bibinutz
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 11 janv. 2009 à 15:59
0
Merci
Bein a moins que tu trouve une librairie .NET pour gérer les webcams, non il n'y a pas de moyen en c#.

Mais il faut bien voir que la DLL C++ managé c'est vraiment une solution plutot élégante. En ajoutant ce projet à ta solution, l'utilisation est totalement transparente, t'as l'impression d'utiliser des fonctions .NET normales, et tout le code natif qui tourne derrière t'es totalement caché.

Pour te mettre un peu en jambe, ajoute un projet de DLL C++ managé à ta solution. Le code natif doit s'éxécuter entre #pragma unmanaged/managed.
Commenter la réponse de bubbathemaster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.