C++ 从OpenCV Mat获取值

C++ 从OpenCV Mat获取值,c++,opencv,matrix,double,C++,Opencv,Matrix,Double,我的程序中有一个通道矩阵,下一个定义为: matchingResult.create(result_cols, result_rows, CV_32FC1); 它不是颜色矩阵。 我使用minMaxLoc方法查找最小值和最大值的位置: double minValue; double maxValue; cv::Point minLocation; cv::Point maxLocation; cv::minMaxLoc(_matchingMap, &minValue,

我的程序中有一个通道矩阵,下一个定义为:

matchingResult.create(result_cols, result_rows, CV_32FC1);
它不是颜色矩阵。
我使用minMaxLoc方法查找最小值和最大值的位置:

double minValue;
double maxValue;
cv::Point minLocation;
cv::Point maxLocation;          
cv::minMaxLoc(_matchingMap, &minValue, &maxValue, &minLocation, &maxLocation);
此方法返回正确的值:

最小值:-287909最大值:682182最小位置:[5,1]最大位置: [4,2]

如果我把矩阵打印到cout中,我会得到同样的结果

但我无法使用最大值的位置(maxLocation)从矩阵中获得相同的值,也无法更改最大值的值。
如果我试图获得价值:

double value = _matchingMap.at<double>(maxLocation);
std::cout<<"Value for "<<maxLocation << " is "<<value << std::endl;
double value=\u matchingMap.at(maxLocation);

std::cout当您使用32FC1初始化Mat时,您分配32位的单元格,这些单元格在C中由
float
表示。为了使用双精度
矩阵,即64位浮点值,您需要使用64FC1


因此,要么将矩阵更改为双倍,要么使用
at

您的矩阵是32FC1,因此您需要使用
at
谢谢,这对我很有帮助,您可以发布答案并解释32位和64位体系结构吗?我的错误是,我发现单位是4位。我应该更加注意网络资源。