【OpenCV C++学习】1、Mat像素操作(ptr指针遍历)

自学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(i, j);
        //操作像素
        //int value = p[0];
        //。。。。。。
    }

1.2 方法二

for (int i = 0; i < img.rows; i++)
{
    uchar* p = img.ptr(i);
	for (int j = 0; j < img.cols; j++)
    {
		//操作像素
        //int value = p[j];
        //。。。。。。
    }
}

2、多通道图像

2.1 方法一

for(int i = 0;i(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(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];
        //。。。。。。
    }
}

参考博客:

1 Mat.ptr进行像素操作_无情的搬砖机器的博客-CSDN博客_mat.ptr

2 Opencv之三通道图像的三种指针遍历_努力|奋斗的博客-CSDN博客_opencv 指针遍历

你可能感兴趣的:(c++,opencv,学习)