@@ -1486,7 +1486,7 @@ void refineDetectedMarkers(InputArray _image, const Ptr<Board> &_board,
14861486 _convertToGrey (_image, grey);
14871487
14881488 // vector of final detected marker corners and ids
1489- vector< Mat > finalAcceptedCorners;
1489+ vector<vector<Point2f> > finalAcceptedCorners;
14901490 vector< int > finalAcceptedIds;
14911491 // fill with the current markers
14921492 finalAcceptedCorners.resize (_detectedCorners.total ());
@@ -1597,38 +1597,18 @@ void refineDetectedMarkers(InputArray _image, const Ptr<Board> &_board,
15971597
15981598 // parse output
15991599 if (finalAcceptedIds.size () != _detectedIds.total ()) {
1600- _detectedCorners.clear ();
1601- _detectedIds.clear ();
1602-
16031600 // parse output
16041601 Mat (finalAcceptedIds).copyTo (_detectedIds);
1605-
1606- _detectedCorners.create ((int )finalAcceptedCorners.size (), 1 , CV_32FC2);
1607- for (unsigned int i = 0 ; i < finalAcceptedCorners.size (); i++) {
1608- _detectedCorners.create (4 , 1 , CV_32FC2, i, true );
1609- for (int j = 0 ; j < 4 ; j++) {
1610- _detectedCorners.getMat (i).ptr < Point2f >()[j] =
1611- finalAcceptedCorners[i].ptr < Point2f >()[j];
1612- }
1613- }
1602+ _copyVector2Output (finalAcceptedCorners, _detectedCorners);
16141603
16151604 // recalculate _rejectedCorners based on alreadyIdentified
1616- vector< Mat > finalRejected;
1605+ vector<vector<Point2f> > finalRejected;
16171606 for (unsigned int i = 0 ; i < alreadyIdentified.size (); i++) {
16181607 if (!alreadyIdentified[i]) {
16191608 finalRejected.push_back (_rejectedCorners.getMat (i).clone ());
16201609 }
16211610 }
1622-
1623- _rejectedCorners.clear ();
1624- _rejectedCorners.create ((int )finalRejected.size (), 1 , CV_32FC2);
1625- for (unsigned int i = 0 ; i < finalRejected.size (); i++) {
1626- _rejectedCorners.create (4 , 1 , CV_32FC2, i, true );
1627- for (int j = 0 ; j < 4 ; j++) {
1628- _rejectedCorners.getMat (i).ptr < Point2f >()[j] =
1629- finalRejected[i].ptr < Point2f >()[j];
1630- }
1631- }
1611+ _copyVector2Output (finalRejected, _rejectedCorners);
16321612
16331613 if (_recoveredIdxs.needed ()) {
16341614 Mat (recoveredIdxs).copyTo (_recoveredIdxs);
0 commit comments