I'm trying to project a square on an aruco marker, but all I get are some random lines. I think that my rotation and translation matrix because when using aruco::drawAxis, the axis are projected ok. Here is my code for drawing a square.
void drawCube(InputOutputArray image, InputArray cameraMatrix, InputArray distortionCoeff, InputArray transl, InputArray rot, float dim){
float half_l = 0.089/2; //dim of the aruco marker /2
CV_Assert(
image.getMat().total() != 0 &&
(image.getMat().channels() == 1 || image.getMat().channels() == 3)
);
CV_Assert(dim > 0);
// project square points
std::vector<cv::Point3f> squarePoints;
squarePoints.push_back(cv::Point3f(half_l, half_l, 0));
squarePoints.push_back(cv::Point3f(half_l, -half_l, 0));
squarePoints.push_back(cv::Point3f(-half_l, -half_l, 0));
squarePoints.push_back(cv::Point3f(-half_l, half_l, 0));
std::vector<cv::Point2f> imagePoints;
projectPoints(
squarePoints, rot, transl, cameraMatrix, distortionCoeff, imagePoints
);
cv::line(image, imagePoints[0], imagePoints[1], cv::Scalar(255, 0, 0), 3);
cv::line(image, imagePoints[1], imagePoints[2], cv::Scalar(255, 0, 0), 3);
cv::line(image, imagePoints[2], imagePoints[3], cv::Scalar(255, 0, 0), 3);
cv::line(image, imagePoints[3], imagePoints[0], cv::Scalar(255, 0, 0), 3);
}