[OPENCV] Probleme opencv en compilation static
oneirics
Messages postés
5
Statut
Membre
-
Sugel Messages postés 4293 Date d'inscription Statut Membre Dernière intervention -
Sugel Messages postés 4293 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tout le monde !
Je bloque sur un problème depuis maintenant quelques jours. Je vous explique: je suis en train de créer un logiciel de traitement video. Tout marche nickel, sauf que maintenant je veux déployer cette application statiquement. Or dès que je compile en statique, je n'arrive plus à ouvrir les images et vidéos qui pourtant s'ouvraient bien auparavant en mode debug...
Voici mon code simplifé:
Voila donc la vidéo ne s'ouvre pas et sans aucunes erreurs. J'ai juste le qDebug() qui m'indique que la vidéo ne s'est pas ouverte...
Si quelqu'un a une solution je suis preneur.
Cordialement et merci d'avance !
Je bloque sur un problème depuis maintenant quelques jours. Je vous explique: je suis en train de créer un logiciel de traitement video. Tout marche nickel, sauf que maintenant je veux déployer cette application statiquement. Or dès que je compile en statique, je n'arrive plus à ouvrir les images et vidéos qui pourtant s'ouvraient bien auparavant en mode debug...
Voici mon code simplifé:
void traitement_mouvement::mouvement(String url)
{
qDebug()<<"running app";
VideoCapture capture(url);//Ouverture de la video voulue
if (!capture.isOpened())// Verifie si la video s'est ouverte correctement
{
qDebug()<<"Probleme ouverture video";
qDebug() << QString::fromStdString(url);
}
}
Voila donc la vidéo ne s'ouvre pas et sans aucunes erreurs. J'ai juste le qDebug() qui m'indique que la vidéo ne s'est pas ouverte...
Si quelqu'un a une solution je suis preneur.
Cordialement et merci d'avance !
1 réponse
-
Alors là...
Essaie de caler quelques lignes de debug dans le constructeur de ta classe, mais sinon j'ai pas d'idées !
-
-
tu peut la compiler toi-même à partir des sources:
https://github.com/opencv/opencv/tree/master/3rdparty/ffmpeg
remplace le contenu de make.bat par ceci:set path=c:\dev\msys32\bin;%path% & gcc -Wall -c -o opencv_ffmpeg.o -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lws2_32 ar rcs libopencv_ffmpeg.a opencv_ffmpeg.o
Cela devrait marcher.
(PS: ce code ne compile que la version x86) -
Donc tu veux dire qu'il me suffit de remplacer le contenu de make.bat, et je peux compiler tout ça en utilisant cmake, make, make install ?
Je vais tester cela de suite, merci de ta reponse !
Et c'est une version x86 qu'il me faut donc c'est nickel !
EDIT: laisse tomber ce que je viens de dire, j'avais pas vu le build_win32.txt... -
Par contre maintenant j'ai un autre problème que je n'arrive pas a comprendre, quand je lance le .bat, voici ce qu'il me donne:
In file included from ffopencv.c:1:0:
../../modules/highgui/src/cap_ffmpeg_impl.hpp:71:6: erreur: #error "libswscale is necessary to build the newer OpenCV ffmpeg wrapper"
#error "libswscale is necessary to build the newer OpenCV ffmpeg wrapper"
Avec une liste d'erreurs qui en découle... et pourtant j'ai bien un libswscale.a ... -
As-tu bien suivi ça ?
https://raw.githubusercontent.com/Itseez/opencv/master/3rdparty/ffmpeg/build_win32.txt
Tu peut toujours essayer de définir à la bourine cette variable à grand coup de#define HAVE_FFMPEG_SWSCALE
, histoire de voir si ce n'est pas simplement un #define oublié...
PS: Je me demande si ce n'est pas normalement cmake qui définis ça; du coup, rien d'étonnant à l'absence de ce define.
-