自学OpenCV的一点小笔记
还有其他遍历Mat的方法,比如使用at遍历,本篇只记录常用的指针遍历
1、单通道灰度图像
1.1 方法一(效率较低)
for (int i = 0; i < img.rows; i++)
for (int j = 0; j < img.cols; j++)
{
uchar* p = img.ptr<uchar>(i, j);
//操作像素
//int value = p[0];
//。。。。。。
}
1.2 方法二
for (int i = 0; i < img.rows; i++)
{
uchar* p = img.ptr<uchar>(i);
for (int j = 0; j < img.cols; j++)
{
//操作像素
//int value = p[j];
//。。。。。。
}
}
2、多通道图像
2.1 方法一
for(int i = 0;i<img.rows;i++)
for (int j = 0; j < img.cols; j++)
{
uchar* p = img.ptr<uchar>(i, j);
//操作像素
//int B_value = p[0];
//int G_value = p[1];
//int R_value = p[2];
//。。。。。。
}
2.2 方法二
for (int i = 0; i < img.rows; i++)
{
uchar* p = img.ptr<uchar>(i);
for (int j = 0; j < img.cols*3; j+=3)
{
//操作像素
//int B_value = p[j];
//int G_value = p[j+1];
//int R_value = p[j+2];
//。。。。。。
}
}
参考博客: