Skip to content

Commit

Permalink
Merge pull request #1536 from caseymcc:randpattern_setfeatures
Browse files Browse the repository at this point in the history
  • Loading branch information
alalek committed Feb 20, 2018
2 parents 1023c38 + c433e60 commit 295dce5
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
13 changes: 10 additions & 3 deletions modules/ccalib/include/opencv2/ccalib/randpattern.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,14 @@ class CV_EXPORTS RandomPatternCornerFinder
/* @brief Load pattern image and compute features for pattern
@param patternImage image for "random" pattern generated by RandomPatternGenerator, run it first.
*/
void loadPattern(cv::Mat patternImage);
void loadPattern(const cv::Mat &patternImage);

/* @brief Load pattern and features
@param patternImage image for "random" pattern generated by RandomPatternGenerator, run it first.
@param patternKeyPoints keyPoints created from a FeatureDetector.
@param patternDescriptors descriptors created from a DescriptorExtractor.
*/
void loadPattern(const cv::Mat &patternImage, const std::vector<cv::KeyPoint> &patternKeyPoints, const cv::Mat &patternDescriptors);

/* @brief Compute matched object points and image points which are used for calibration
The objectPoints (3D) and imagePoints (2D) are stored inside the class. Run getObjectPoints()
Expand All @@ -108,11 +115,11 @@ class CV_EXPORTS RandomPatternCornerFinder

/* @brief Get object(3D) points
*/
std::vector<cv::Mat> getObjectPoints();
const std::vector<cv::Mat> &getObjectPoints();

/* @brief and image(2D) points
*/
std::vector<cv::Mat> getImagePoints();
const std::vector<cv::Mat> &getImagePoints();

private:

Expand Down
21 changes: 18 additions & 3 deletions modules/ccalib/src/randpattern.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,17 +228,17 @@ void RandomPatternCornerFinder::drawCorrespondence(const Mat& image1, const std:
waitKey(0);
}

std::vector<cv::Mat> RandomPatternCornerFinder::getObjectPoints()
const std::vector<cv::Mat> &RandomPatternCornerFinder::getObjectPoints()
{
return _objectPonits;
}

std::vector<cv::Mat> RandomPatternCornerFinder::getImagePoints()
const std::vector<cv::Mat> &RandomPatternCornerFinder::getImagePoints()
{
return _imagePoints;
}

void RandomPatternCornerFinder::loadPattern(cv::Mat patternImage)
void RandomPatternCornerFinder::loadPattern(const cv::Mat &patternImage)
{
_patternImage = patternImage.clone();
if (_patternImage.type()!= CV_8U)
Expand All @@ -249,6 +249,21 @@ void RandomPatternCornerFinder::loadPattern(cv::Mat patternImage)
_descriptorPattern.convertTo(_descriptorPattern, CV_32F);
}

void RandomPatternCornerFinder::loadPattern(const cv::Mat &patternImage, const std::vector<cv::KeyPoint> &patternKeyPoints, const cv::Mat &patternDescriptors)
{
CV_Assert((int)patternKeyPoints.size()==patternDescriptors.rows);
CV_Assert(patternDescriptors.cols==_descriptor->descriptorSize());
CV_Assert(patternDescriptors.type()==_descriptor->descriptorType());

_patternImage=patternImage.clone();
if(_patternImage.type()!=CV_8U)
_patternImage.convertTo(_patternImage, CV_8U);
_patternImageSize=patternImage.size();
_keypointsPattern=patternKeyPoints;
_descriptorPattern=patternDescriptors.clone();
_descriptorPattern.convertTo(_descriptorPattern, CV_32F);
}

std::vector<cv::Mat> RandomPatternCornerFinder::computeObjectImagePointsForSingle(cv::Mat inputImage)
{
CV_Assert(!_patternImage.empty());
Expand Down

0 comments on commit 295dce5

Please sign in to comment.