OpenCV遍历彩色图像、灰度图像的像素值方法
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遍历彩色图像、灰度图像的像素值方法的更多相关文章
- opencv 3.1.0 访问像素值的三种方法(C++)
三种方法分别问: 指针访问:void colorReduce_ptr(cv::Mat &inputImage, cv::Mat &outputImage, int div); 迭代器访 ...
- opencv输出图片像素值
需求:在控制台输出灰度图像的像素值 代码: #include <stdio.h> #include <iostream> #include <opencv2/core/c ...
- Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像
前文传送门: 「Python 图像处理 OpenCV (1):入门」 普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需 ...
- OpenCV ——遍历图像方法
转自http://blog.csdn.net/daoqinglin/article/details/23628125 ; y < testImage->height; y++) { uch ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- Opencv利用Mat访问像素值
如果是采用Mat形式存储,想要访问灰度图像的灰度值,可以采用如下方法: 如果是彩色图像,采用如下方法: 说明: 其中gray_value中存放灰度值,image是读入的图像,i表示行,j表示列: co ...
- opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...
- 图像相似度计算之哈希值方法OpenCV实现
http://blog.csdn.net/fengbingchun/article/details/42153261 图像相似度计算之哈希值方法OpenCV实现 2014-12-25 21:27 29 ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
随机推荐
- Js 转动抽奖实现
一.样本 地址:http://js.zhuamimi.cn/choujiang/index.htm 源码:https://pan.baidu.com/s/15KhesfcLf1WMOom6PhzCjA ...
- 三、HTTP基础路由详解
1.一次请求的完整实现过程 2.基础路由 Route::get($uri,$callback); Route::post($uri,$callback); Route::put($uri,$callb ...
- es6 语法 (iterator和for...of循环)
Iterator遍历器 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据 ...
- CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
媒体查询介绍 我今天就总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. 先看一个简单的例子: <link rel="stylesheet" media=&q ...
- angluarjs中页面初始化的时候会出现语法{{}}在页面中问题
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题.出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这 ...
- Sublime Text 2 2.0.2 序列号
----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855605813A03DD 5E4AD9E6 6C0EEB94 BC9979 ...
- 图说OOP基础(一)
本文用图形化的形式描述OOP的相关知识.对OOP进行系统化的梳理,以便掌握,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: OOP的相关知识 OOP知识总图 [Object-Orientat ...
- 微信小程序 text属性设置 WXSS样式
>微信小程序的布局css样式 参考自 珺L 文字 width: fit-content;font-size:20px; /*设置文字字号*/color:red; ...
- 编程经验点滴----巧妙解决 Oracle NClob 读写问题
最近一个新项目中,尝试在 Oracle 数据库中使用 NCLOB 来保存大的 xml 字符串. 在代码自动生成工具(通过 JDBC 驱动程序,读数据库表结构,自动生成对应的 java 代码,包含增加. ...
- matlab练习程序(点集配准的SVD法)
上一篇博客中我们使用了四元数法计算ICP. 本篇我们使用SVD计算ICP. 下面是<视觉slam十四讲>中的计算方法: 计算步骤如下: 我们看到,只要求出了两组点之间的旋转,平移是非常容易 ...