mirror of
https://github.com/opencv/opencv.git
synced 2025-07-24 05:39:22 +08:00
fix bug different marker ordering with findChessboardCornersSBWithMeta and CALIB_CB_LARGER flag
This commit is contained in:
parent
df5da4abcd
commit
9dde7790cf
@ -3720,10 +3720,11 @@ Chessboard::Board Chessboard::detectImpl(const Mat& gray,std::vector<cv::Mat> &f
|
||||
continue;
|
||||
}
|
||||
|
||||
iter_boards->normalizeOrientation(false);
|
||||
|
||||
if(iter_boards->getSize() == parameters.chessboard_size ||
|
||||
iter_boards->getSize() == chessboard_size2)
|
||||
{
|
||||
iter_boards->normalizeOrientation(false);
|
||||
if(iter_boards->getSize() != parameters.chessboard_size)
|
||||
{
|
||||
if(iter_boards->isCellBlack(0,0) == iter_boards->isCellBlack(0,int(iter_boards->colCount())-1))
|
||||
|
@ -849,5 +849,18 @@ TEST(Calib3d_RotatedCirclesPatternDetector, issue_24964)
|
||||
EXPECT_LE(error, precise_success_error_level);
|
||||
}
|
||||
|
||||
TEST(Calib3d_CornerOrdering, issue_26830) {
|
||||
const cv::String dataDir = string(TS::ptr()->get_data_path()) + "cv/cameracalibration/";
|
||||
const cv::Mat image = cv::imread(dataDir + "checkerboard_marker_white.png");
|
||||
|
||||
std::vector<Point2f> cornersMinimumSizeMatchesPatternSize;
|
||||
ASSERT_TRUE(cv::findChessboardCornersSB(image, Size(14, 9), cornersMinimumSizeMatchesPatternSize, CALIB_CB_MARKER | CALIB_CB_LARGER));
|
||||
|
||||
std::vector<Point2f> cornersMinimumSizeSmallerThanPatternSize;
|
||||
ASSERT_TRUE(cv::findChessboardCornersSB(image, Size(4, 4), cornersMinimumSizeSmallerThanPatternSize, CALIB_CB_MARKER | CALIB_CB_LARGER));
|
||||
|
||||
ASSERT_EQ(cornersMinimumSizeMatchesPatternSize, cornersMinimumSizeSmallerThanPatternSize);
|
||||
}
|
||||
|
||||
}} // namespace
|
||||
/* End of file. */
|
||||
|
Loading…
Reference in New Issue
Block a user