Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

minimum value per pixel (w.r.t channel) in a 3 channel image

Hi everyone,

Is there any function in openCV which can return the minimum/maximum value of a pixel w.r.t channel in a 3 channel image (e.g. a BGR image) like the following available in MATLAB:

temp = min(im, [], 3);

I know that you can use nested loops to access each pixel using Mat::at<type>(i,j) operator and then use min function twice to get the minimum value per pixel like this:

for (int m = 0; m<src.rows; m++)
    {
        for (int n = 0; n<src.cols; n++)
        {
            intensity = src.at<Vec3b>(m, n);
            rgbmin.at<uchar>(m, n) = min(min(intensity.val[0], intensity.val[1]), intensity.val[2]);
        }
    }

but this seems slower and I am looking for a more efficient way to do this.

Thanks