OpenCV 访问Mat 像素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV 访问Mat 像素相关的知识,希望对你有一定的参考价值。

场景

    在进行烟雾检测的过程中,需要访问Mat指定区域的像素值,然后判断是否符合烟雾的像素特征(当然,在网上查询到的烟雾像素特征,实际上,并没有正确识别出烟雾),可通过如下的方式进行操作

   int  similarDegree = 0;

    int channel = srcMat.channels();

    for (int i=info.smokeLeftTopPos.y; i<maxHeight; i++)

    {

      for (int j=info.smokeLeftTopPos.x; j<maxWidth; j++)

      {

        int r = srcMat.at<uchar>(i, j*channel);

        int g = srcMat.at<uchar>(i, j*channel+1);

        int b = srcMat.at<uchar>(i, j*channel+2);

        if ((r>=200) && (g>=200) && (b<=180))

        {

          similarDegree++;

        }

      }

    }


当然在实际的应用过程中,像素的值很可能不是无符号字符型,还有可能是浮点型,短整型等,可以使用如下的方式进行判断:

    int type = 0;

    switch(srcMat.type())

    {

    case CV_8UC3:

      type = 0;

      break;

    case CV_8SC3:

      type = 1;

      break;

    case CV_16UC3:

      type = 2;

      break;

    case CV_16SC3:

      type = 3;

      break;

    case CV_32SC3:

      type = 4;

      break;

    case CV_32FC3:

      type = 5;

      break;

    case CV_64FC3:

      type = 6;

      break;

    }


参考

http://www.cnblogs.com/wangguchangqing/p/4016179.html


以上是关于OpenCV 访问Mat 像素的主要内容,如果未能解决你的问题,请参考以下文章

《OpenCV:访问Mat图像中每个像素值》

使用 OpenCV 多通道 Mat 沿通道方向访问像素

OpenCV 访问 MAT 对象中的 RGB 值

Opencv利用Mat访问像素值

【OPENCV】cv::Mat像素遍历方法比较

转载OpenCV访问Mat中每个像素的值(新)