在Mat中查找最小/最大值而忽略-100

时间:2014-09-18 20:56:25

标签: c++ opencv max min mat

我正在尝试使用opencv min()max()或MinMaxLoc()来获取Mat中的最小值和最大值。我的mat结构的方式,具有null或无数据的数据点的值为-100。这些opencv函数是否会忽略-100值,或者有没有办法获得最小值而忽略使用预定义函数的-100值?

另一种方法是手动迭代整个Mat并计算最小值和最大值,同时忽略-100但我想尽可能使用内置函数。为什么重新发明轮子。

1 个答案:

答案 0 :(得分:2)

您可以使用NANminMaxLoc

将忽略该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}}比较两个元素(或相同大小的数组的元素对)并给出最小值或最大值,而不是找到全局最小值和数组的最大值,所以这些可能不是你想要的。