Я прочитал несколько постов о доступе к элементу Mat и провел несколько испытаний, но все не удалось. Может ли кто-нибудь дать мне подсказку?
Mat vect(1,3, CV_32FC1);
typedef Vec<float,1> Vec1f; //**
// access ele. at (1,1)
vect.at<Vec1f>( Point(1,1 )) = 5; // I used 1 channel so I defined a new element type as a workaround
Я адаптировал код из этого поста
доступ к многоканальному элементу opencv
И, хотя эту строку // ** можно объявить так:
typedef Vec<float> Vec1f;
согласно строке 582 в core.hpp: Vec (_Tp v0); //! <1-элементный векторный конструктор </p>
Однако, это также не работает
Я применил тот же метод для 2D-матрицы, тогда все в порядке:
Mat warp_mat(2,3, CV_32FC1);
typedef Vec<float,1> Vec1f;
warp_mat.at<Vec1f>( Point(0,0 )) = 1;
warp_mat.at<Vec1f>( Point(1,0 )) = 2;
warp_mat.at<Vec1f>( Point(2,0 )) = 5;
warp_mat.at<Vec1f>( Point(0,1 )) = 4;
warp_mat.at<Vec1f>( Point(1,1 )) = 5;
warp_mat.at<Vec1f>( Point(2,1 )) = 0;
работает нормально!