我检查了 minMaxLoc 但它只给出了矩阵的最大和最小位置。我需要找到的是最大值或等于其他数字。例如(abc >=7) 然后给出矩阵中适用此条件的所有位置。
Matlab 示例: [a,b] = find( heMap >= (max(max(heMap)) ));
那么我如何满足 opencv 中的条件以获得特定的最大值或最小值。?请帮忙
问候
目前我正在使用这种方式
double getMaxValue(Mat hemap)
{
MatConstIterator_<double> it = hemap.begin<double>(), it_end = hemap.end<double>();
double maxdata=0;
for(; it != it_end; ++it)
{
if(*it>maxdata)
{
maxdata = *it;
}
}
return maxdata;
}
最佳答案
我不知道有任何内置函数可以做到这一点。您可以将您的矩阵与一个为您提供 bool 矩阵的元素进行比较。但是我不知道有什么函数可以为您提供每个非零元素的位置,例如 find
。
但是循环遍历数组并自己进行比较非常简单:
int thresh = 50;
for(int y=0;y<matrix.rows; y++)
for(int x=0;x<matrix.cols; x++)
if( matrix.at<uchar>(y,x) >= thresh)
printf(" (%d,%d) = %d\n",x,y, matrix.at<uchar>(y,x));
关于c++ - OpenCV从矩阵获取条件库最大元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267319/