У меня есть эта матрица в OpenCV:Как получить участок матрицы в OpenCV
cv::Matx44d m;
, и я хочу, чтобы получить верхнюю матрицу левой 3x3 из этой матрицы. Каков самый простой и быстрый способ сделать это?
я могу сделать это следующими способами:
cv::Matx44d m;
cv::Matx33d o;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
o(i,j)=m(i,j);
}
}
, но я ищу более простой и быстрый способ, если он существует!
Не используйте OpenCV, если это вообще возможно. Например, [Eigen] (http://eigen.tuxfamily.org) позволит вам [отобразить прямоугольную часть] (http://eigen.tuxfamily.org/dox/group__TutorialBlockOperations.html) матрицы ([даже матрица OpenCV] (http://eigen.tuxfamily.org/dox/group__TutorialMapClass.html)) и проведет проверку границ массива. Извините, на самом деле не ответ на ваш вопрос, но я думаю, это может сэкономить вам немного боли. –
o = m (cv :: Rect (0,0,3,3)) работает ли это? – William