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

时间: 2024-10-06 00:10:41

OpenCV 访问Mat 像素的相关文章

OpenCV访问Mat对象中数据时发生异常---Mat中的数据访问

7.1和7.1.1由于越狱不成熟,半完美越狱后电脑上无法访问系统越狱目录,如var usr 等等. 今天有些意外地发现,可以在电脑上使用手机的越狱目录我手机 i4 7.1.1 联通 半完美越狱,没装Afc2Add,也没装Appsync 附上  --->我的半完美越狱过程 好了,下面直接正题 一.前提,必须安装ifile! 打开ifile,并转到 /var/mobile/media 目录下,然后点击右上角的 [ 编辑 ]如图: 二.点左下角的 + 号创建,如图: 三.点 [ 类型],选择[符号链接

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

转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Application Programming Cookbook>看到的例子,非常不错,算是对之前的文章<访问Mat图像中每个像素的值>的回顾和补充. Color Reduce 还是使用经典的Reduce Color的例子,即对图像中的像素表达进行量化.如常见的RGB24图像有256×256×256中颜色,通

opencv 访问图像像素的三种方式

访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols 表示行和列通道数可以通过channels()函数获得:void visitPix1(){ Mat srcImg = imread("jpg/1.jpeg"); Mat dstImg; srcImg.copyTo(dstImg); int rowNum = dstImg.rows; int

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

图像容器Mat 还是先看Mat的存储形式.Mat和Matlab里的数组格式有点像,但一般是二维向量,如果是灰度图,一般存放<uchar>类型:如果是RGB彩色图,存放<Vec3b>类型. 单通道灰度图数据存放格式: 多通道的图像中,每列并列存放通道数量的子列,如RGB三通道彩色图: 注意通道的顺序反转了:BGR.通常情况内存足够大的话图像的每一行是连续存放的,也就是在内存上图像的所有数据存放成一行,这中情况在访问时可以提供很大方便.可以用 isContinuous()函数来判断图像

opencv中Mat类型数据操作与遍历

Mat作为opencv中一种数据类型常常用来存储图像,相对与以前的IplImgae类型来说,Mat类型省去了人工的对内存的分配与释放,转而自动分配释放.Mat Class主要包括两部个数据部分:一个是matrix header(包括matrix的大小尺寸,储存方法,储存地址等等..),另一个是指向存储像素值的矩阵的指针. Opencv中对Mat的复制分为两种, Mat A, C; // creates just the header parts A = imread(argv[1], CV_LO

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

转载一个讲Mat像素访问的,仅记为笔记. y原文链接为:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 目录(?)[-] Color Reduce 方法零ptr和操作符 方法一ptr和指针操作 方法二ptr指针操作和取模运算 方法三ptr指针运算和位运算 方法四指针运算 方法五ptr位运算以及imagecols imagechannels 方法六连续图像 方法七continuouschannels 方法八Mat _iterato

opencv高效访问图像像素(遍历像素的方法总结)

一.Accessingpixel values访问像素值.(用类自带的方法:方便,但效率不高) 1.      cv::Mat has the a templatemethod at(int y, int x) 用法image.at<cv::Vec3b>(j,i)[channel]= value; 注意事项:the programmer needs to specify the return type that is expected(需认为指定返回值类型),一般使用type cv::Vec3

OpenCV:Mat元素访问方法、性能、代码复杂度以及安全性分析

欢迎转载,尊重原创,所以转载请注明出处: http://blog.csdn.net/bendanban/article/details/30527785 本文讲述了OpenCV中几种访问矩阵元素的方法,在指定平台上给出性能比较,分析每种矩阵元素访问方法的代码复杂度,易用性. 一.预备设置 本文假设你已经正确配置了OpenCV的环境,为方便大家实验,在文中也给出了编译源程序的Makefile,其内容如代码段1所示. 采用如代码段2所示的计时函数,这段代码你可以在我之前的博文中找到,abtic()

OpenCV学习C++接口 Mat像素遍历详解

OpenCV学习C++接口 Mat像素遍历详解 原文地址:https://www.cnblogs.com/zhehan54/p/8460602.html