Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Calibrer sa caméra


Sujet :

OpenCV

  1. #1
    Nouveau membre du Club
    Calibrer sa caméra
    Bonjour a tous,
    Je suis nouveau dans OpenCV et je cherche un tuto qui montre comment calibrer son caméra en utilisant cette biblio (OpenCV).
    Comment peux-je me servir par ces fonctions?
    cvFindChessboardCorners()
    cvCalibrateCamera2()
    Je ne sais même pas comment commencer !!!!
    une question débile! as ce que je dois créer un nouveau projet application win32, console, ... ?

    Merci pour toutes réponse

  2. #2
    Membre du Club
    Il y a déjà un exemple de calibration tout fait fourni avec opencv.

    Dans le dossier d'install d'opencv tu le trouveras dans ...opencv\samples\cpp\calibration.cpp

    voila voila

  3. #3
    Nouveau membre du Club
    ok!
    Mais comment je-peux m'en servir (étape par étape) stp?! je suis nouveau sur OpenCV

    Merci

  4. #4
    Nouveau membre du Club
    Je viens de créer le projet, grace à Google j'ai pu résolu pas mal d'erreurs Warning,...
    Mais j'ai pas trouvé une solution en ce que concerne l'Erreur LNK2019:
    Voici ce que j'ai comme erreur:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1>Img.obj : error LNK2019: symbole externe non résolu "double __cdecl cv::calibrateCamera(class std::vector<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float> > >,class std::allocator<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float> > > > > const &,class std::vector<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > >,class std::allocator<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > > > > const &,class cv::Size_<int>,class cv::Mat &,class cv::Mat &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &,int)" (?calibrateCamera@cv@@YANABV?$vector@V?$vector@V?$Point3_@M@cv@@V?$allocator@V?$Point3_@M@cv@@@std@@@std@@V?$allocator@V?$vector@V?$Point3_@M@cv@@V?$allocator@V?$Point3_@M@cv@@@std@@@std@@@2@@std@@ABV?$vector@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@V?$allocator@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@@2@@3@V?$Size_@H@1@AAVMat@1@3AAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@3@4H@Z) référencé dans la fonction "bool __cdecl runCalibration(class std::vector<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > >,class std::allocator<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > > > >,class cv::Size_<int>,class cv::Size_<int>,float,float,int,class cv::Mat &,class cv::Mat &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > &,class std::vector<float,class std::allocator<float> > &,double &)" (?runCalibration@@YA_NV?$vector@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@V?$allocator@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@@2@@std@@V?$Size_@H@cv@@1MMHAAVMat@4@2AAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@2@3AAV?$vector@MV?$allocator@M@std@@@2@AAN@Z)
    1>Img.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::projectPoints(class cv::Mat const &,class cv::Mat const &,class cv::Mat const &,class cv::Mat const &,class cv::Mat const &,class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > > &)" (?projectPoints@cv@@YAXABVMat@1@0000AAV?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@@Z) référencé dans la fonction "double __cdecl computeReprojectionErrors(class std::vector<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float> > >,class std::allocator<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint3_<float> > > > > const &,class std::vector<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > >,class std::allocator<class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > > > > const &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > const &,class std::vector<class cv::Mat,class std::allocator<class cv::Mat> > const &,class cv::Mat const &,class cv::Mat const &,class std::vector<float,class std::allocator<float> > &)" (?computeReprojectionErrors@@YANABV?$vector@V?$vector@V?$Point3_@M@cv@@V?$allocator@V?$Point3_@M@cv@@@std@@@std@@V?$allocator@V?$vector@V?$Point3_@M@cv@@V?$allocator@V?$Point3_@M@cv@@@std@@@std@@@2@@std@@ABV?$vector@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@V?$allocator@V?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@@2@@2@ABV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@2@2ABVMat@cv@@3AAV?$vector@MV?$allocator@M@std@@@2@@Z)
    1>Img.obj : error LNK2019: symbole externe non résolu "class cv::Mat __cdecl cv::getOptimalNewCameraMatrix(class cv::Mat const &,class cv::Mat const &,class cv::Size_<int>,double,class cv::Size_<int>,class cv::Rect_<int> *)" (?getOptimalNewCameraMatrix@cv@@YA?AVMat@1@ABV21@0V?$Size_@H@1@N1PAV?$Rect_@H@1@@Z) référencé dans la fonction _main
    1>Img.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::drawChessboardCorners(class cv::Mat &,class cv::Size_<int>,class cv::Mat const &,bool)" (?drawChessboardCorners@cv@@YAXAAVMat@1@V?$Size_@H@1@ABV21@_N@Z) référencé dans la fonction _main
    1>Img.obj : error LNK2019: symbole externe non résolu "bool __cdecl cv::findChessboardCorners(class cv::Mat const &,class cv::Size_<int>,class std::vector<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float>,class std::allocator<class cv:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />oint_<float> > > &,int)" (?findChessboardCorners@cv@@YA_NABVMat@1@V?$Size_@H@1@AAV?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@H@Z) référencé dans la fonction _main
    1>C:\Users\Me\Documents\Programmation\C++\Projet\Img\Debug\Img.exe : fatal error LNK1120: 5 externes non résolus

    Dans quelques forums, ils parlent de rajout des bibliothèques , dont j'en sais pas les quelles. (le script c'est la fonction calibration fourni avec OpenCV, dont je veux l'executer pour calibrer ma camera)

    Merci d'avance

  5. #5
    Membre du Club
    Tu dois configurer ton ide pour qu'il puisse prendre en compte les lib d'opencv.tu regardes dans les options du projet/editeur de liens si je ne me trompes pas

    tu utilises quel IDE ?

  6. #6
    Nouveau membre du Club
    Merci mouzlo pour la réponse
    j'utilise VS2010 sous W7, pour répondre à ta question
    Mais en ce que concerne la mienne, ma question est simple, si l'erreur signifes qu'il manque des biblio dans mon projet, alors quels sont ces fameux biblio? sachant, que les biblio d'OpenCV sont déjà ajouter, genre:
    C:\OpenCV2.2\lib\opencv_core220d.lib
    C:\OpenCV2.2\lib\opencv_highgui220d.lib
    C:\OpenCV2.2\lib\opencv_video220d.lib
    C:\OpenCV2.2\lib\opencv_ml220d.lib
    C:\OpenCV2.2\lib\opencv_legacy220d.lib
    C:\OpenCV2.2\lib\opencv_imgproc220d.lib
    et ainsi

    user32.lib, que dans un forum ils recommandent de la rajouter pour ce genre d'erreur, mais dans mon cas l'erreur est toujours présente!!!

    voila, j'espère que j'étais clair!
    et merci encore une fois pour la réponse rapide!

  7. #7
    Membre du Club
    Tes erreurs montrent que des fonctions n'ont pas été trouvées par l'editeur de liens,
    hors ces fonctions se trouvent dans l'entête calib3d.hpp

    Soit il te manque l'include calib3d.hpp ou tu as oublié la lib opencv_calib3d220d.lib

  8. #8
    Nouveau Candidat au Club
    Calibration de caméra
    Bonjour,

    je travaille dans le cadre d'un projet où je doit nécessairement calibrer une caméra, j'ai donc utiliser le fichier cameracalibration.cpp que j'ai compilé qui me donne bien mes paramètres intrinsèques et extrinsèques, cependant pour les paramètres extrinsèques il ne me renvoie que 6 paramètres : 3 pour la rotation et 3 pour la translation. Je voudrait savoir comment faire pour pouvoir accéder à tous les coefficients de ma matrice de rotation donc 9 au total puisque j'en ai besoin dans le calcul des coordonnées pixels de mes points 3D correspondants.

    Cordialement,

  9. #9
    Membre du Club
    Je ne connais pas bien OpenCV, mais il est possible qu'il te donne la rotation sous la forme d'un vecteur (3 nombres) au lieu de la matrice 3x3 complète, non ?