Bonjour,
N'ayant pas trouvé de réponses à ma question ni dans le forum, ni ailleurs sur le net, je me permets d'ouvrir un nouveau sujet. Voici donc mon problème :
Je développe une application d'enregistrement d'images en temps réel à partir d'une caméra. Pour diverses raisons, je dois enregistrer les images une à une (et non sous forme de séquence vidéo), au format JPEG.
Je fais donc appel à la fonction cvSaveImage("MonNomDImage.jpg", MonImage) à intervalle de temps régulier (par exemple toutes les 40 ms, si le framerate d'acquisition est à 25 images / secondes).
J'ai réalisé en cours de route que le simple appel à cette fonction prenait en moyenne une centaine de millisecondes (je précise que je travaille sur des images 1024*768 couleur), ce qui m'empêche d'enregistrer mes images à 25 images par secondes (bon, sans aller jusqu'à demander un tel framerate d'enregistrement, faire passer le temps que prend cvSaveImage de 100ms à 50 ms me suffirait amplement).
Donc mes questions sont les suivantes :
1. Vu le contexte d'utilisation (et notamment la taille des images), un tel temps (un dixième de seconde, ça me paraît énorme) pour la fonction cvSaveImage vous paraît-il normal ?
2. Si la réponse à la question 1. est "oui", à quoi est consommé le temps ? J'ai diverses idées, qui me paraissent toutes assez farfelues : temps d'encodage jpeg (mais si c'était la source du problème, comment serait-il possible d'encoder une vidéo en mjpeg en temps réel ?), temps d'accès disque (peut-être que l'enregistrement répété de fichiers différents demande un temps important au disque dur), ...
3. Si la réponse à la question 1. est "non", auriez-vous des suggestions pour améliorer ce temps ?
A toutes fins utiles, je précise que je suis sous Fedora Core 6, avec un processeur double coeur à 2,4 GHz, 2 Gigas de RAM. Ma version d'opencv est la 1.0.0.
Un grand merci d'avance à quiconque m'apporterait une réponse, une piste, un indice, une indication !
Philippe
Partager