我有一个3x3单应矩阵,我使用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;
}
}
}
以上不会从单应矩阵返回正确的值。 我搜索了文档,教程和谷歌,老实说,我看不出我做错了什么。
答案 0 :(得分:3)
这应该有效(如果你确定图像的类型是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;
}
}
}
也是一个重载的运算符&lt;&lt;对于std :: ostream,如果你只想显示图像元素,可以使用cv :: Mat。