c++ - 如何在 OpenCV 中计算 Mat 的最大像素值

标签 c++ opencv

<分区>

我想这应该是显而易见的。但是我找不到简单的方法来在 OpenCV 的 Mat 中的所有像素中找到最大值。当然,我可以针对每种像素类型执行以下操作。但是一般的 max 函数仍然有用。

double cvMax(cv::Mat& mat)
{
float max=0;
float* pData=(float*)mat.data;
for(int i=0;i<mat.rows;i++) 
{
    for(int j=0;j<mat.cols;j++)
    {
        float value = pData[j+i*mat.cols];
        if(value>max) 
        {
            max=value;
        }
    }
}
return max;
}

最佳答案

cv::minMaxIdx使用起来真的很简单。它在文档中看起来很复杂,但您可以省略大部分参数:

Mat m = ...;

double min, max;
minMaxIdx(m, &min, &max);

printf("min: %f, max: %f\n", min, max);

此外,cv::minMaxIdxstd::max_element 快 10 倍以上。这是因为 cv::minMaxIdx 针对处理 cv::Mat 数据进行了优化,并且尽可能使用多线程。

如果你还需要图像中最小值和最大值的位置,你可以使用cv::minMaxLoc .

关于c++ - 如何在 OpenCV 中计算 Mat 的最大像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12521874/

相关文章:

c++ - 如何使用 AWS CPP SDK 检查 AWS S3 key 是否存在?

c++ - OpenCV - 无法抓取所有帧

c++ - MLP : Relation between number of iteration and accuracy

python - OpenCV:自动调整窗口大小以显示图像

c++ - 即使在混合后也想要透明图像

python - Raspberry Pi 4 的相机与 OpenCV 集成

c++ - '~' 在 C++ 中有什么用?

c++ - CMake:如何根据配置和体系结构将不同的文件复制到构建目录

c++ - 将 MPI 数据类型返回给 MPI Gather

c++ - 使用 Ferns 描述符训练后保存 opencv 描述符匹配器