我正在尝试使用opencv min()max()或MinMaxLoc()来获取Mat中的最小值和最大值。我的mat结构的方式,具有null或无数据的数据点的值为-100。这些opencv函数是否会忽略-100值,或者有没有办法获得最小值而忽略使用预定义函数的-100值?
另一种方法是手动迭代整个Mat并计算最小值和最大值,同时忽略-100但我想尽可能使用内置函数。为什么重新发明轮子。
答案 0 :(得分:2)
您可以使用NAN
,minMaxLoc
Mat C = (Mat_<double>(3,3) << 0, -1, NAN, -1, 5, -1, 0, -1, 0);
cout << "C = " << endl << " " << C << endl << endl;
SparseMat S = SparseMat(C);
double minVal, maxVal;
minMaxLoc( S, &minVal, &maxVal );
cout << "minVal = " << minVal << endl;
cout << "maxVal = " << maxVal << endl;
C =
[0, -1, nan;
-1, 5, -1;
0, -1, 0]
minVal = -1
maxVal = 5
输出:
min
顺便提一下,max
和{{1}}比较两个元素(或相同大小的数组的元素对)并给出最小值或最大值,而不是找到全局最小值和数组的最大值,所以这些可能不是你想要的。