opencv学习-使用指针遍历图像

1.通过一个双重循环来遍历所有的像素值
2.ptr并无特别含义,通常用来定义一个指针变量
3.*s++=p等于s=*p,*s++
4.为了降低分析的复杂度,降低图像中的颜色数目是有用的。如果N是颜色缩小比例,那么对于图像中每个像素的每一个通道,将其值除以N(整数除法,舍去余数),然后再乘N,这样就能得到不大于原始像素值的N的最大倍值。
5.0xff相当于十进制的255

#include  <opencv2/opencv.hpp>
#include  <iostream>
using namespace cv;
using namespace std;
void colordec(Mat &image, int div=64)
{
 int nl = image.rows;//行数
 int nc = image.cols*image.channels();//每行元素个数
 for (int j = 0; j < nl; j++)
 {
  uchar*data = image.ptr<uchar>(j);//得到j行的首地址  for (int i = 0; i < nc; i++)
  {
   data[i] = data[i] / div * div + div / 2;//处理每一个像素
  }
 }
}
int main()
{
 Mat srcImage = imread("3.jpg");
 colordec(srcImage);
 namedWindow("picture");
 imshow("picture", srcImage); waitKey(0);
 return 0;}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42017043/article/details/83339126
今日推荐