У меня есть матрица гомографии 3×3, которую я вычислил с помощью функции findHomography ().
Я храню его в матрице cv :: Mat.
Я пытаюсь сделать доступ к элементу, используя следующий код
float cvHomography::accessElements(const cv::Mat& aCvMat)
{
//cout << aCvMat << endl;
const float* Mi;
for( int i = 0; i < aCvMat.rows; i++){
Mi = aCvMat.ptr<float>(i);
for( int j = 0; j < aCvMat.cols; j++){
cout << Mi[j] << endl;
}
}
}
Вышеприведенное не возвращает правильное значение из матрицы гомографии.
Я искал документацию, учебники и Google, и я честно не вижу, что я делаю неправильно.
Это должно работать (если вы уверены, что тип изображения — CV_64F):
void cvHomography::accessElements(const cv::Mat& aCvMat)
{
// assert aCvMat.type() == CV_64F
for( int i = 0; i < aCvMat.rows; i++){
for( int j = 0; j < aCvMat.cols; j++){
cout << aCvMat.at<double>(i,j) << endl;
}
}
}
Также перегружен оператор << для std :: ostream работает с cv :: Mat, если вы хотите просто отображать элементы изображения.
Других решений пока нет …