Charuco detector: stop-gap measure for poor detection rate on tough perspective

add checkMarkers flag to charucoParameters to control board verification
(post-detection)
This commit is contained in:
Sergei Nikiforov 2024-12-30 19:28:48 +01:00 committed by Sergei
parent 972e135479
commit a4a253ea2b
2 changed files with 5 additions and 1 deletions

View File

@ -16,6 +16,7 @@ struct CV_EXPORTS_W_SIMPLE CharucoParameters {
CV_WRAP CharucoParameters() {
minMarkers = 2;
tryRefineMarkers = false;
checkMarkers = true;
}
/// cameraMatrix optional 3x3 floating-point camera matrix
CV_PROP_RW Mat cameraMatrix;
@ -28,6 +29,9 @@ struct CV_EXPORTS_W_SIMPLE CharucoParameters {
/// try to use refine board, default false
CV_PROP_RW bool tryRefineMarkers;
/// run check to verify that markers belong to the same board, default true
CV_PROP_RW bool checkMarkers;
};
class CV_EXPORTS_W CharucoDetector : public Algorithm {

View File

@ -335,7 +335,7 @@ struct CharucoDetector::CharucoDetectorImpl {
InputOutputArrayOfArrays _markerCorners = markerCorners.needed() ? markerCorners : tmpMarkerCorners;
InputOutputArray _markerIds = markerIds.needed() ? markerIds : tmpMarkerIds;
detectBoard(image, charucoCorners, charucoIds, _markerCorners, _markerIds);
if (checkBoard(_markerCorners, _markerIds, charucoCorners, charucoIds) == false) {
if (charucoParameters.checkMarkers && checkBoard(_markerCorners, _markerIds, charucoCorners, charucoIds) == false) {
CV_LOG_DEBUG(NULL, "ChArUco board is built incorrectly");
charucoCorners.release();
charucoIds.release();