https://blog.csdn.net/mooneve/article/details/53001677

应用:将彩色图像转为灰度图像输出

方法一 使用ptr函数和指针 (高效)

void main()
{
//读入彩色图像
Mat img = imread("fruits.jpg");
imshow("原图", img);
int rows = img.rows;
int cols = img.cols;
//生成和img同样大小的空白灰度图像
Mat grayImg = Mat(rows, cols, CV_8U);
for (int i = 0; i < rows; i++)
{
//获取图像每一行的首地址
Vec3b *p = img.ptr<Vec3b>(i);//彩色图 //p指向地址
uchar *p2 = grayImg.ptr<uchar>(i);//灰度图 //*p指向内容
for (int j = 0; j < cols; j++)
{
//每次迭代获取图像列的地址
Vec3b &pix = *p++;//彩色图 //pix指向内容
uchar &pix2 = *p2++;//灰度图 //&pix指向地址
pix2 = pix[0] * 0.114 + pix[1] * 0.587 + pix[2] * 0.299;
}
}
imshow("灰度图", grayImg);
waitKey(0);
}

  

方法二 使用at<Vec3b>(i, j) 和at<uchar>(i, j)

void main()
{
//读入彩色图像
Mat img = imread("fruits.jpg");
imshow("原图", img);
int rows = img.rows;
int cols = img.cols;
//生成和img同样大小的空白灰度图像
Mat grayImg = Mat(rows, cols, CV_8U);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
//彩色图像获取到单个像素
Vec3b pix = img.at<Vec3b>(i,j);
//获取到RGB分量的值。
uchar B = pix[0];
uchar G = pix[1];
uchar R = pix[2];
//或者使用下面的方法
//uchar B = img.at<Vec3b>(i, j)[0];
//uchar G = img.at<Vec3b>(i, j)[1];
//uchar G = img.at<Vec3b>(i, j)[2];
//计算灰度值,然后赋值给灰度图中的像素
grayImg.at<uchar>(i,j) = R * 0.299 + G * 0.587 + B * 0.114;//灰度著名心理学公式
}
}
imshow("灰度图", grayImg);
waitKey(0);
}

  

OpenCV遍历彩色图像、灰度图像的像素值方法的更多相关文章

  1. opencv 3.1.0 访问像素值的三种方法(C++)

    三种方法分别问: 指针访问:void colorReduce_ptr(cv::Mat &inputImage, cv::Mat &outputImage, int div); 迭代器访 ...

  2. opencv输出图片像素值

    需求:在控制台输出灰度图像的像素值 代码: #include <stdio.h> #include <iostream> #include <opencv2/core/c ...

  3. Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需 ...

  4. OpenCV ——遍历图像方法

    转自http://blog.csdn.net/daoqinglin/article/details/23628125 ; y < testImage->height; y++) { uch ...

  5. 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?

      分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...

  6. Opencv利用Mat访问像素值

    如果是采用Mat形式存储,想要访问灰度图像的灰度值,可以采用如下方法: 如果是彩色图像,采用如下方法: 说明: 其中gray_value中存放灰度值,image是读入的图像,i表示行,j表示列: co ...

  7. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)

    0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...

  8. 图像相似度计算之哈希值方法OpenCV实现

    http://blog.csdn.net/fengbingchun/article/details/42153261 图像相似度计算之哈希值方法OpenCV实现 2014-12-25 21:27 29 ...

  9. c#图像处理入门(-bitmap类和图像像素值获取方法)

    c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...

随机推荐

  1. 微信小程序-查询快递

    1.新建快速启动项目 2.在设置里面勾选不校验合法域名,以防编译报错 3.在app.json中改一下窗口表现:app.json—"navigationBarTitleText": ...

  2. [DOM基础]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等属性的解释

    由于经常搞混这几个属性,所以查找资料总结一下,方便以后翻出来温习. 一.偏移量-以offset开头的 1.offsetHeight:元素在垂直方向上占用的空间大小,像素.包括元素的高度.可见的水平滚动 ...

  3. Ehcache配置详解及CacheManager使用

    <?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://w ...

  4. 微信小程序心得

    首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. - app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这 ...

  5. Python入门基础之变量和数据类型

    在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-80 ...

  6. iOS ----------要学习的地方(链接整理)

    1.http://www.cocoachina.com/special/xcode/ 2.http://blog.csdn.net/a416863220/article/details/4111387 ...

  7. 自定义View的三个构造函数

    自定义View有三个构造方法,它们的作用是不同的. public MyView(Context context) { super(context); } public MyView(Context c ...

  8. 浅谈EditText控件的inputType类型

    android:inputType="none"--默认 android:inputType="text"--输入文本字符 android:inputType= ...

  9. Android/IOS手机使用Fiddler抓包

    对于Android和IOS开发及测试的同事来说抓包是一个很重要的事,有利于排查问题所在,快速定位问题.但长期以来一直没有一款可以快速抓包的工具,直到有了Fiddler2. 使用步骤: 1.  Fidd ...

  10. PL/SQL重新编译包无反应案例2

    在这篇"PL/SQL重新编译包无反应"里面介绍了编译包无反应的情况,今天又遇到一起案例, 在测试环境中,一个包的STATUS为INVALID,重新编译时,一直处于编译状态,检查发现 ...