访问cv :: Mat中的所有像素

时间:2011-10-22 16:33:54

标签: c++ opencv

这是访问cv::Mat中所有像素的正确方法:

for( row = 0; row < mat.rows; ++row) 
    {
            for ( col = 0; col < mat.cols; ++col) 
            {



            }
    }

或者是否存在类似于IplImage *

的此公式的公式方法
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*pt.x)))[pt.y*3];

1 个答案:

答案 0 :(得分:1)

在最好的情况下,所有像素都是连续存储的,你应该可以这样做:

uchar* pixel = mat.data;
for(int i = 0; i < mat.rows * mat.cols; ++i) 
{
    // access pixel[0],pixel[1],pixel[2] here
    pixel += 3; // move to next pixel
}

要更加通用,但仍然很快,请查看Mat::isContinuous()提及的sample code。可以看到计算元素地址的通用公式here(下面转载)。

Address calculation