Esto debería ser obvio, pensé. Pero no puedo encontrar una manera fácil de encontrar el máximo entre todos los píxeles en una Mat de OpenCV. Por supuesto, puedo hacer lo siguiente para cada tipo de píxel. Pero la función máxima general sería útil.Cómo calcular el valor máximo de píxeles de Mat en OpenCV
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;
}
Probablemente vale la pena mencionar que max_element devuelve un iterador. – twerdster
Una nota: espero que el iterador Mat sea bastante lento, ya que en cada incremento debe verificar si llegó al final de una fila (Matrix podría ser discontinuo, y también podría haber bytes de relleno) – Antonio