123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566 |
- #ifndef __OPENCV_ARUCO_HPP__
- #define __OPENCV_ARUCO_HPP__
- #include <opencv2/core.hpp>
- #include <vector>
- #include "opencv2/aruco/dictionary.hpp"
- namespace cv {
- namespace aruco {
- enum CornerRefineMethod{
- CORNER_REFINE_NONE,
- CORNER_REFINE_SUBPIX,
- CORNER_REFINE_CONTOUR
- };
- struct CV_EXPORTS_W DetectorParameters {
- DetectorParameters();
- CV_WRAP static Ptr<DetectorParameters> create();
- CV_PROP_RW int adaptiveThreshWinSizeMin;
- CV_PROP_RW int adaptiveThreshWinSizeMax;
- CV_PROP_RW int adaptiveThreshWinSizeStep;
- CV_PROP_RW double adaptiveThreshConstant;
- CV_PROP_RW double minMarkerPerimeterRate;
- CV_PROP_RW double maxMarkerPerimeterRate;
- CV_PROP_RW double polygonalApproxAccuracyRate;
- CV_PROP_RW double minCornerDistanceRate;
- CV_PROP_RW int minDistanceToBorder;
- CV_PROP_RW double minMarkerDistanceRate;
- CV_PROP_RW int cornerRefinementMethod;
- CV_PROP_RW int cornerRefinementWinSize;
- CV_PROP_RW int cornerRefinementMaxIterations;
- CV_PROP_RW double cornerRefinementMinAccuracy;
- CV_PROP_RW int markerBorderBits;
- CV_PROP_RW int perspectiveRemovePixelPerCell;
- CV_PROP_RW double perspectiveRemoveIgnoredMarginPerCell;
- CV_PROP_RW double maxErroneousBitsInBorderRate;
- CV_PROP_RW double minOtsuStdDev;
- CV_PROP_RW double errorCorrectionRate;
- };
- CV_EXPORTS_W void detectMarkers(InputArray image, const Ptr<Dictionary> &dictionary, OutputArrayOfArrays corners,
- OutputArray ids, const Ptr<DetectorParameters> ¶meters = DetectorParameters::create(),
- OutputArrayOfArrays rejectedImgPoints = noArray(), InputArray cameraMatrix= noArray(), InputArray distCoeff= noArray());
- CV_EXPORTS_W void estimatePoseSingleMarkers(InputArrayOfArrays corners, float markerLength,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArray rvecs, OutputArray tvecs, OutputArray _objPoints = noArray());
- class CV_EXPORTS_W Board {
- public:
-
- CV_WRAP static Ptr<Board> create(InputArrayOfArrays objPoints, const Ptr<Dictionary> &dictionary, InputArray ids);
-
-
- CV_PROP std::vector< std::vector< Point3f > > objPoints;
-
- CV_PROP Ptr<Dictionary> dictionary;
-
-
- CV_PROP std::vector< int > ids;
- };
- class CV_EXPORTS_W GridBoard : public Board {
- public:
-
- CV_WRAP void draw(Size outSize, OutputArray img, int marginSize = 0, int borderBits = 1);
-
- CV_WRAP static Ptr<GridBoard> create(int markersX, int markersY, float markerLength,
- float markerSeparation, const Ptr<Dictionary> &dictionary, int firstMarker = 0);
-
- CV_WRAP Size getGridSize() const { return Size(_markersX, _markersY); }
-
- CV_WRAP float getMarkerLength() const { return _markerLength; }
-
- CV_WRAP float getMarkerSeparation() const { return _markerSeparation; }
- private:
-
- int _markersX, _markersY;
-
- float _markerLength;
-
- float _markerSeparation;
- };
- CV_EXPORTS_W int estimatePoseBoard(InputArrayOfArrays corners, InputArray ids, const Ptr<Board> &board,
- InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec,
- OutputArray tvec, bool useExtrinsicGuess = false);
- CV_EXPORTS_W void refineDetectedMarkers(
- InputArray image,const Ptr<Board> &board, InputOutputArrayOfArrays detectedCorners,
- InputOutputArray detectedIds, InputOutputArrayOfArrays rejectedCorners,
- InputArray cameraMatrix = noArray(), InputArray distCoeffs = noArray(),
- float minRepDistance = 10.f, float errorCorrectionRate = 3.f, bool checkAllOrders = true,
- OutputArray recoveredIdxs = noArray(), const Ptr<DetectorParameters> ¶meters = DetectorParameters::create());
- CV_EXPORTS_W void drawDetectedMarkers(InputOutputArray image, InputArrayOfArrays corners,
- InputArray ids = noArray(),
- Scalar borderColor = Scalar(0, 255, 0));
- CV_EXPORTS_W void drawAxis(InputOutputArray image, InputArray cameraMatrix, InputArray distCoeffs,
- InputArray rvec, InputArray tvec, float length);
- CV_EXPORTS_W void drawMarker(const Ptr<Dictionary> &dictionary, int id, int sidePixels, OutputArray img,
- int borderBits = 1);
- CV_EXPORTS_W void drawPlanarBoard(const Ptr<Board> &board, Size outSize, OutputArray img,
- int marginSize = 0, int borderBits = 1);
- void _drawPlanarBoardImpl(Board *board, Size outSize, OutputArray img,
- int marginSize = 0, int borderBits = 1);
- CV_EXPORTS_AS(calibrateCameraArucoExtended) double calibrateCameraAruco(
- InputArrayOfArrays corners, InputArray ids, InputArray counter, const Ptr<Board> &board,
- Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
- OutputArray stdDeviationsIntrinsics, OutputArray stdDeviationsExtrinsics,
- OutputArray perViewErrors, int flags = 0,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON));
- CV_EXPORTS_W double calibrateCameraAruco(
- InputArrayOfArrays corners, InputArray ids, InputArray counter, const Ptr<Board> &board,
- Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
- OutputArrayOfArrays rvecs = noArray(), OutputArrayOfArrays tvecs = noArray(), int flags = 0,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON));
- CV_EXPORTS_W void getBoardObjectAndImagePoints(const Ptr<Board> &board, InputArrayOfArrays detectedCorners,
- InputArray detectedIds, OutputArray objPoints, OutputArray imgPoints);
- }
- }
- #endif
|