J'ai développé une interface graphique sous Qt me permettant de visualiser un flux vidéo et je souhaiterais maintenant effectuer des traitements sur ce flux.
J'ai un problème lors de l'association des données entre Qt et le format IplImage de OpenCv pour ensuite effectuer mes traitements.
J'utilise les fonctions CvCreateImage et CvSetData et cela fonctionne très bien mais je suis obligé d'appeler CvCreateImage pour chaque nouvelle image et je ne comprends pas pourquoi ?
La conséquence est que mon occupation mémoire augmente à chaque itération et au bout d'un moment cela sature.
J'ai essayé de faire un CvReleaseImage à chaque itération mais dans ce cas là la fonction CvSetData pose problème et le programme plante.
Voici la partie de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 QImage img ; IplImage *image; if( ! img.isNull()) { image = cvCreateImage( cvSize(img.width(), img.height()), IPL_DEPTH_8U, 4); cvSetData( image, (char*) img.bits(), img.bytesPerLine() ); cvThreshold(image,image,50,120,0); }
sachant que la Qimage est issue d'un thread qui semble très bien fonctionner.
Qu'est ce que je peux faire ?
Est-ce que j'utilise la bonne méthode ?
Partager