A la suite de questions sur le forum, je vous propose un exemple de capture et de traitement d'image acquise à partir d'une webcam.
L'application repose sur le composant freeware JLCVideo.
Le composant JLCVideo est disponible sur
http://delphi.icm.edu.pl/ftp/d20free/jlcvideo.zip
J'ai renommé le composant "JLCVideo" en "Camera" et l'ai traduit en partie.
Il faut installer le composant Tcamera (camera.pas) à la place (ou en plus) de TJLCVideo
J'espère n'avoir rien oublié.
A vous de jouer !
Kén@vo
(Delphi 4 sur Windows Meuh)
Conclusion :
J'ai un problème si j'essaie de remettre le composant original (JLCVideo) à la place du composant Camera (peut-être un bug corrigé à l'époque)
10 juin 2007 à 21:26
Site en cache:
http://66.102.9.104/search?q=cache:QADV83TYgG4J:www.tutorials-xe.com/VIDEO/create-ksproxyax/+directdraw+registerfilter&hl=fr&ct=clnk&cd=1&gl=fr&client=firefox-a
Discussions:
http://groups.google.com/groups?q=group%3Amicrosoft.public.*+insubject%3Avirtual+author%3Arep.movsd%40gmail.com&start=0&num=100&hl=en&lr=&as_drrb=q&as_mind=1&as_minm=1&as_miny=1981&as_maxd=14&as_maxm=6&as_maxy=2006&safe=off&filter=0
Désolé d'avoir pourri la mise en page du source avec des liens trop long :(
10 juin 2007 à 21:24
http://groups.google.com/groups?q=group%3Amicrosoft.public.*+insubject%3Avirtual+author%3Arep.movsd%40gmail.com&start=0&num=100&hl=en&lr=&as_drrb=q&as_mind=1&as_minm=1&as_miny=1981&as_maxd=14&as_maxm=6&as_maxy=2006&safe=off&filter=0
et en particulier, j'ai trouvé la liste des questions posées sur des newsgroup par un type qui a réussi à faire un truc similaire (ledit truc est payant, donc pas opensource :-( ):
group:microsoft.public.* insubject:virtual author:rep.movsd@gmail.com
Si quelqu'un a le courage un jour de se lancer là-dedans, je suis partant pour m'associer à lui!
10 juin 2007 à 19:35
Toutefois, je pense qu'il est possible de faire un système pour lancer une application "server" en tâche de fond, qui lance l'acquisition de façon classique, puis de "publier" un filtre DirectDraw supplémentaire personnalisé pour toutes les applications clientes qui voudraient faire de l'acquisition simultanément (je crois que c'est possible à l'échelle d'un process). Ce filtre "simulerait" une webcam virtuelle en redirigeant simplement les données en provenance du server (par exemple en utilisant un Read/WriteProcessMemory) dans l'application cliente (MSN, etc...). Peut-être qu'il faudrait injecter une DLL dans les applications clientes propriétaires (genre MSN) pour appeler RegisterFilter.
C'est juste une idée comme ça, sans garantie que ça marche, mais si mon intuition est bonne ça ne devrait pas être *trop* compliqué à mettre en oeuvre.
10 juin 2007 à 19:01
Est il possible avec TCamera, de capturer ce que voit la caméra et ce même si elle est déjà utilisée par une autre application. Imaginons que quelqu'un chat sur msn pendant que mon prog a base de TCamera tourne, ou plutôt l'inverse, mon prog se lance alors que la cam est déjà utilisée... comment détecter que quelqu'un utilise déjà la caméra ? et la cas échéant, au lieu de tout planter, comment utiliser le flux déjà créé comme source plutôt que d'en créer un nouveau. => A la fin de la session msn, possibilité de rechanger de source
Et si on ne peut pas avec TCaméra, quelle serait la méthode, ou dans quel direction chercher la méthode?
Pour info je précise que chez moi, mais peut être pas chez tout le monde, tout plante si on essaye d'accéder à la cam par deux applis différentes.
23 juin 2005 à 18:28
unit Camera;
interface
uses
SysUtils, Classes;
type
TCamera1 = class(TCamera)//Ils disent que TCamera (entre parenthese) n'est pas un identificateur declare
private
{ Déclarations privées }
protected
{ Déclarations protégées }
public
{ Déclarations publiques }
published
{ Déclarations publiées }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Exemples', [TCamera1]);
end;
end.
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.