Hello à tous,
Je suis dans la panade... J'essaie de mettre en place une calibration pour une caméra. J'ai d'abord utilisé un pattern "damier", mais ça s'est avéré peu concluant en raison d'un petit flou persistant sur mon image. J'ai donc décidé de passer avec une grille de point (plus robuste).
Malheureusement j'ai des problèmes avec la fonctionsCette fonction fait une exception... Visiblement quand elle release un tableau ou un objet (difficile de savoir quoi !).C++: bool findCirclesGrid(InputArray image, Size patternSize, OutputArray centers, int flags=CALIB_CB_SYMMETRIC_GRID, const Ptr<FeatureDetector>& blobDetector=new SimpleBlobDetector()
Je me suis basé sur le code de la documentation:
Je le fais sur les deux images jointes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 IplImage *distortedPattern, *undistPattern, *uncorrectedImg, *correctedImg; distortedPattern = cvLoadImage("circle_77_2-1.tif", CV_LOAD_IMAGE_GRAYSCALE); Mat imgMat = distortedPattern; Size patternsize(7, 7); vector<Point2f> pointCenters; bool patternfound = findCirclesGrid(imgMat, patternsize, pointCenters);
J'ai essayé de convertir les images de différentes manières, mais ca ne change rien !
J'ai essayé de changer le type des variables passées à la fonction (Mat pointCenters, etc.). Aucun résultat
J'ai essayé sur d'autres images.
J'ai essayé de mettre à jour la librairie OpenCV. rien non plus
Toujours la même erreur à cet endroit :
Je vous remercie pour votre aide et espère que vous aurez une réponse ou une expérience à partager avec cette fonction opencv 2.4.0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template<typename _Tp> inline void Ptr<_Tp>::delete_obj() { if( obj ) delete obj; }
A+
nico
Partager