我有一个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;
}
}
}
上面的方法不能从单应矩阵返回正确的值。我已经搜索了文档、教程和谷歌,老实说,我不知道我做错了什么。
这应该可以工作(如果您确定图像的类型是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一起工作。