123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- #ifndef __OPENCV_ARUCO_HPP__
- #define __OPENCV_ARUCO_HPP__
- #include <opencv2/core.hpp>
- #include <vector>
- #include "opencv2/aruco/dictionary.hpp"
- namespace cv {
- namespace aruco {
- struct CV_EXPORTS DetectorParameters {
- DetectorParameters();
- int adaptiveThreshWinSizeMin;
- int adaptiveThreshWinSizeMax;
- int adaptiveThreshWinSizeStep;
- double adaptiveThreshConstant;
- double minMarkerPerimeterRate;
- double maxMarkerPerimeterRate;
- double polygonalApproxAccuracyRate;
- double minCornerDistanceRate;
- int minDistanceToBorder;
- double minMarkerDistanceRate;
- bool doCornerRefinement;
- int cornerRefinementWinSize;
- int cornerRefinementMaxIterations;
- double cornerRefinementMinAccuracy;
- int markerBorderBits;
- int perspectiveRemovePixelPerCell;
- double perspectiveRemoveIgnoredMarginPerCell;
- double maxErroneousBitsInBorderRate;
- double minOtsuStdDev;
- double errorCorrectionRate;
- };
- CV_EXPORTS void detectMarkers(InputArray image, Dictionary dictionary, OutputArrayOfArrays corners,
- OutputArray ids, DetectorParameters parameters = DetectorParameters(),
- OutputArrayOfArrays rejectedImgPoints = noArray());
- CV_EXPORTS void estimatePoseSingleMarkers(InputArrayOfArrays corners, float markerLength,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs);
- class CV_EXPORTS Board {
- public:
-
-
- std::vector< std::vector< Point3f > > objPoints;
-
- Dictionary dictionary;
-
-
- std::vector< int > ids;
- };
- class CV_EXPORTS GridBoard : public Board {
- public:
-
- void draw(Size outSize, OutputArray img, int marginSize = 0, int borderBits = 1);
-
- static GridBoard create(int markersX, int markersY, float markerLength, float markerSeparation,
- Dictionary dictionary);
-
- Size getGridSize() const { return Size(_markersX, _markersY); }
-
- float getMarkerLength() const { return _markerLength; }
-
- float getMarkerSeparation() const { return _markerSeparation; }
- private:
-
- int _markersX, _markersY;
-
- float _markerLength;
-
- float _markerSeparation;
- };
- CV_EXPORTS int estimatePoseBoard(InputArrayOfArrays corners, InputArray ids, const Board &board,
- InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec,
- OutputArray tvec);
- CV_EXPORTS void refineDetectedMarkers(
- InputArray image, const Board &board, InputOutputArrayOfArrays detectedCorners,
- InputOutputArray detectedIds, InputOutputArray rejectedCorners,
- InputArray cameraMatrix = noArray(), InputArray distCoeffs = noArray(),
- float minRepDistance = 10.f, float errorCorrectionRate = 3.f, bool checkAllOrders = true,
- OutputArray recoveredIdxs = noArray(), DetectorParameters parameters = DetectorParameters());
- CV_EXPORTS void drawDetectedMarkers(InputOutputArray image, InputArrayOfArrays corners,
- InputArray ids = noArray(),
- Scalar borderColor = Scalar(0, 255, 0));
- CV_EXPORTS void drawAxis(InputOutputArray image, InputArray cameraMatrix, InputArray distCoeffs,
- InputArray rvec, InputArray tvec, float length);
- CV_EXPORTS void drawMarker(Dictionary dictionary, int id, int sidePixels, OutputArray img,
- int borderBits = 1);
- CV_EXPORTS void drawPlanarBoard(const Board &board, Size outSize, OutputArray img,
- int marginSize = 0, int borderBits = 1);
- CV_EXPORTS double calibrateCameraAruco(
- InputArrayOfArrays corners, InputArray ids, InputArray counter, const 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));
- }
- }
- #endif
|