Get value from OpenCV Mat
我的程序中有一个通道矩阵,下一个定义:
1 | matchingResult.create(result_cols, result_rows, CV_32FC1); |
它不是颜色矩阵。
我使用minMaxLoc方法查找最小值和最大值的位置:
1 2 3 4 5 | double minValue; double maxValue; cv::Point minLocation; cv::Point maxLocation; cv::minMaxLoc(_matchingMap, &minValue, &maxValue, &minLocation, &maxLocation); |
此方法返回正确的值:
MinValue: -287909 MaxValue: 682182 MinLocation: [5, 1] MaxLocation:
[4, 2]
如果将矩阵打印到cout中,我将得到相同的结果。
但是我无法通过使用最大值(maxLocation)的位置或更改最大值来从矩阵中获得相同的值。
如果我尝试获得价值:
1 2 | double value = _matchingMap.at<double>(maxLocation); std::cout<<"Value for"<<maxLocation <<" is"<<value << std::endl; |
我会得到一些奇怪的东西:
Value for [4, 2] is -1.08215e+39
我想通过使用行/列坐标更改矩阵中的值,但是我做错了。我找不到错误,也许smb可以告诉我正确的方法。
如何迭代我在这里看到的矩阵
使用32FC1初始化Mat时,您将分配32位单元格,这些单元格用C中的
因此,将矩阵更改为双精度,或使用