Acquisition d'images sur pc faites par CMUcam3 via liaison RS232

nab26 Messages postés 5 Date d'inscription vendredi 16 juillet 2010 Statut Membre Dernière intervention 19 juillet 2010 - 16 juil. 2010 à 05:44
nab26 Messages postés 5 Date d'inscription vendredi 16 juillet 2010 Statut Membre Dernière intervention 19 juillet 2010 - 19 juil. 2010 à 20:47
Bonjour à tous.

Je travaille actuellement sur un projet nécessitant la programmation d'un capteur vidéo relié à mon pc par une liaison série RS232 : la CMUcam3.

Pour ceux d'entre vous qui connaissent un petit peu la CMUcam3 et tout ce qui s'y rapporte, en flashant le microcontrôleur de la CMUcam3 à l'aide du programme "cmucam2" permettant d'émuler la CMUcam2, et en utilisant le logiciel "CMUcam3 grabber utility" (qui est un logiciel graphique d'interface utilisateur : GUI), il suffit d'appuyer sur le bouton "grab image" de ce logiciel (cela ne marche qu'en ayant émuler la CMUcam2) pour prendre une photo à l'aide de la CMUcam3 et la voir s'afficher dans une fenêtre du logiciel.

C'est exactement ce que je souhaite faire : faire prendre une photo à la CMUcam3, et la faire apparaître sur mon pc, la différence étant que je souhaite le faire moi même à l'aide d'un programme écrit en langage C et non en appuyant sur un bouton.

Pour information, le logiciel "CMUcam3 grabber utility" est codé en Visual Basic, son code source ne m'est donc d'aucune utilité. J'ai en revanche jeté un coup d'oeil au code source du programme "cmucam2" servant à émuler la CMUcam2, et en particulier à la procédure qui s'exécute lorsque l'on appui sur le bouton "grab image" (cc3_jpeg_send_simple) : celle-ci envoie apparemment une image jpeg (je suppose que celle-ci est prise par la CMUcam3 lors de l'exécution de la procédure) vers le fichier pointé par stdout, c'est-à-dire vers la sortie standard, qui est dans le cas de la CMUcam3 le port série si je ne me trompe pas.

En utilisant "CMUcam3 grabber utility" qui fait office de terminal pour communiquer avec la CMUcam3, ou également en utilisant un hyperterminal, j'ai pu voir que lors de l'exécution de cette procédure, tout un tas de caractères incompréhensibles (ceux que vous voyez lorsque vous ouvrez une image jpg avec bloc note par exemple) étaient envoyés vers le pc depuis la CMUcam3 : tous ces caractères sont, je suppose, le contenu de la trame correspondante à l'image prise et envoyée par la CMUcam3.

A l'aide d'un programme écrit en langage C trouvé sur ce site (qui tourne sur mon pc et non sur la CMUcam3), je lis le contenu du port série de mon pc, et le place dans un fichier. Le contenu du fichier est donc théoriquement la trame de l'image, et en l'ouvrant je trouve bel et bien tout un tas de caractères incompréhensibles, mais je ne suis même pas sûr que le contenu du fichier soit vraiment la trame de l'image, et si elle est entière.

Voici les questions que je me pose :

1)Supposons un instant que le contenu de mon fichier soit bel et bien la trame complète de mon image : le fait que la trame soit sous cette forme signifie-t-il que l'image est encodée? Dois-je dans ce cas là décoder? Si oui, comment? Plus généralement, comment dois-je procéder pour afficher l'image en ayant sa trame sous forme "incompréhensible" dans un fichier?

2)Je suppose que le registre (SBUF?) dans lequel se trouve le contenu de ce qui a été envoyé par la liaison série, et dans lequel je viens lire ce contenu à l'aide du programme qui tourne sur mon pc, n'est pas d'une taille gigantesque : ai-je raison? Dans ce cas comment être sûr d'avoir bien récupéré toute la trame de l'image (sans avoir à comparer la trame que je vois passer sous hyperterminal avec ce qui se trouve dans le fichier, ce qui est je pense une possibilité)?

3)Pour ceux ayant déjà travaillé sur la CMUcam3 et s'y connaissant assez, pensez-vous que je me sois trompé sur l'une des choses que j'ai définies plus haut? En d'autre termes, ai-je déjà des idées et connaissances erronées concernant la CMUcam3?

Merci énormément d'avance à tous ceux qui prendront le temps de lire mon sujet, et d'éventuellement me répondre.

1 réponse

nab26 Messages postés 5 Date d'inscription vendredi 16 juillet 2010 Statut Membre Dernière intervention 19 juillet 2010
19 juil. 2010 à 20:47
Bonjour tout le monde. Vous pouvez oubliez mon problème. Par contre j'ai une autre question : savez-vous où est-ce que je pourrais trouver le code source écrit en langage C d'un algorithme de RLE (run length encoding) pour pouvoir faire du trackage d'objets sur une image?
Merci beaucoup d'avance pour vos réponses.
0
Rejoignez-nous