Вы должны использовать отладчик для подобных случаев.
Я не могу найти ничего логически неправильного в вашем коде.Но при использовании векторов вы всегда должны проверять, обращаетесь ли вы к индексу, превышающему размер вектора.
В этом случае я бы проверил, если corners.size() > 0
, corners[0].size() >= 2
и vec_AC.size() >= 1
.После того, как вы это сделаете, вы должны быть уверены, что pos_img
будет заполнен правильно или не заполнен вовсе.
Далее, прежде чем получить доступ к pose
, я проверю, есть ли pose.size() >= 1
, прежде чем получить доступ к pose[0]
иpose[1]
.
Правильное выполнение этих проверок полностью исключит ошибку векторного индекса вне диапазона, а также поможет вам выяснить, почему markerCorners
не имеет ожидаемого размера.