Affichage webcam, capture et traitement d'image

Soyez le premier à donner votre avis sur cette source.

Vue 41 555 fois - Téléchargée 5 319 fois

Description

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)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
oops j'ai interverti les liens plus haut...
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 :(
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
En faisant un peu de "Googling", j'ai trouvé la version cache d'une discussion sur le sujet d'une webcam virtuelle (le site original a l'air d'avoir disparu):
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!
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
Non, ce n'est pas possible "nâtivement". C'est une limitation imposée par les driver même des webcam.

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.
niocco
Messages postés
6
Date d'inscription
mardi 14 septembre 2004
Statut
Membre
Dernière intervention
21 juillet 2009
-
je viens t'envoyer un msg mais autant l'ajouter aussi en tant que com pour que tout le monde en profite:

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.
ewertheimer
Messages postés
163
Date d'inscription
dimanche 16 janvier 2005
Statut
Membre
Dernière intervention
26 janvier 2009
-
J'ai fait ce qu'it dit mais quand j'installe il y a _un bug dans les class :
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.