diff --git a/modules/aruco/src/aruco.cpp b/modules/aruco/src/aruco.cpp index f71aeca63..e6135fab7 100644 --- a/modules/aruco/src/aruco.cpp +++ b/modules/aruco/src/aruco.cpp @@ -1278,12 +1278,20 @@ void GridBoard::draw(Size outSize, OutputArray _img, int marginSize, int borderB Ptr Board::create(InputArrayOfArrays objPoints, const Ptr &dictionary, InputArray ids) { CV_Assert(objPoints.total() == ids.total()); - CV_Assert(objPoints.type() == CV_32FC3); + CV_Assert(objPoints.type() == CV_32FC3 || objPoints.type() == CV_32FC1); std::vector< std::vector< Point3f > > obj_points_vector; for (unsigned int i = 0; i < objPoints.total(); i++) { std::vector corners; Mat corners_mat = objPoints.getMat(i); + if(objPoints.type() == CV_32FC1) + { + CV_Assert(corners_mat.total() == 12); + } + else + { + CV_Assert(corners_mat.total() == 4); + } for (int j = 0; j < 4; j++) { corners.push_back(corners_mat.at(j)); }