opencv学习之路(7)、访问图像像素
一、动态地址访问
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
//动态地址访问
Mat img=imread("E://green.png");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;//获取行数
int colNumber=img.cols;//获取列数
for(int i=;i<rowNumber;i++){
for (int j = ; j <colNumber; j++)
{
dst.at<Vec3b>(i,j)[]=;//蓝色通道
dst.at<Vec3b>(i,j)[]=;//绿色通道
dst.at<Vec3b>(i,j)[]=;//红色通道
//dst.at<uchar>(i,j)=255;//灰度图像
}
}
imshow("dst",dst);
waitKey();
}

二、指针访问(速度快)
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
Mat img=imread("E://green.png");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;//获取行数
int colNumber=img.cols*img.channels();//列数×通道数=每一行的元素个数
for(int i=;i<rowNumber;i++){
uchar* data=dst.ptr<uchar>(i);//获取每一行首地址,ptr函数可以得到图像任意行的首地址
for (int j = ; j <colNumber; j++)
{
//data[j]=255;//灰度图
switch (j%)
{
case ://蓝色通道
data[j]=;
break;
case ://绿色通道
data[j]=;
break;
case ://红色通道
data[j]=;
break;
}
}
}
imshow("dst",dst);
waitKey();
}
三、迭代器访问(了解)

四、减色效果
Mat img=imread("E://1.jpg");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;
int colNumber=img.cols*img.channels();//获取每一行的元素
for(int i=;i<rowNumber;i++){
uchar* data=dst.ptr<uchar>(i);//获取每一行首地址
for (int j = ; j <colNumber; j++)
{
switch (j%)
{
case ://蓝色通道
data[j]=data[j]/*+/;
break;
case ://绿色通道
data[j]=data[j]/*+/;
break;
case ://红色通道
data[j]=data[j]/*+/;
break;
}
}
}
imshow("dst",dst);
waitKey();
减色原理 data[j]=data[j]/64*64+64/2 可参考http://blog.csdn.net/lanchunhui/article/details/51167153
五、随机产生椒盐噪声
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
Mat img=imread("E://1.jpg");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;
int colNumber=img.cols;
int i,j;
for (int k = ; k < ; k++)//产生噪声的个数(此时为400)
{
i=rand()%rowNumber;//任意数对行数取余
j=rand()%colNumber;//任意数对列数取余
dst.at<Vec3b>(i,j)[]=;
dst.at<Vec3b>(i,j)[]=;
dst.at<Vec3b>(i,j)[]=;//将这三行的“255”设置为“0”即产生椒噪声
}
imshow("dst",dst);
waitKey();
}

opencv学习之路(7)、访问图像像素的更多相关文章
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- opencv 访问图像像素的三种方式
访问图像中的像素 访问图像像素有三种可行的方法方法一:指针访问指针访问访问的速度最快,Mat类可以通过ptr函数得到图像任意一行的首地址,同时,Mat类的一些属性也可以用到公有属性 rows和cols ...
- OpenCV 学习之路(2) -- 操作像素
本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...
- opencv学习笔记(八)IplImage* 访问图像像素的值
opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储.IplImage结构体如下所示. typedef struct _IplImage { i ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- 【OpenCV】三种方式操作图像像素
OpenCV中,有3种访问每个像素的方法:使用at方法.使用迭代器方法.使用指针 运行如下程序后可以发现使用at方法速度最快. 代码如下: //操作图像像素 #include <opencv2/ ...
- OpenCV成长之路(2):图像的遍历
我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题. 一.遍历图像的4种方 ...
- OpenCV成长之路(4):图像直方图
一.图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比. 图 ...
- OpenCV学习笔记(七) 图像金字塔 阈值 边界
转自: OpenCV 教程 使用 图像金字塔 进行缩放 图像金字塔是视觉运用中广泛采用的一项技术.一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到 ...
随机推荐
- QT linux
一. 如果你是服务器版的CentOS,我建议你安装一下图形界面 1. 首先安装X window: yum groupinstall 'X WindowSystem'2. 然后安装GNOME: yum ...
- cocos2d JS 错误异常抛出捕获和崩溃拦截
Error对象 一旦代码解析或运行时发生错误,JavaScript引擎就会自动产生并抛出一个Error对象的实例,然后整个程序就中断在发生错误的地方. Error对象的实例有三个最基本的属性: nam ...
- (4)Python3笔记 之 流程控制
一.条件控制 # 语法规则 if 变量(或表达式): 语句块1 elif 变量(或表达式): 语句块2 else: 语句块3 #示例 score = 83 if score > 90: prin ...
- webpack打包报错
Invalid configuration object. Webpack has been initialised using a configuration object that does no ...
- Javascript-可莱托指数判断
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- C# 5.0五大新特性
第一:绑定运算符,:=: 这个只是简化了数据绑定,跟ASP.NET MVC3不断改进一样,其实不是什么亮点改进. comboBox1.Text :=: textBox1.Text; //将文本框的内容 ...
- Sitecore xDB基础知识 - 识别用户,联系人,访客,客户
体验数据库(xDB)是Sitecore平台的关键元素,特别是当您希望将解决方案提升到简单的内容管理要求之外时.它用于跟踪您的用户(即联系人,访客,客户)与您网站的互动方式.营销人员可以使用此数据来了解 ...
- Tomcat JAR包冲突报错
查看Tomcat下有两个PDF加密的jar包如图: 删除这个bcprov-jdk14-138.jar包,然后重启Tomcat就好了. 这个jar包和Tomcat中的一个包冲突,反复调用导致的. 参考: ...
- 决策树算法——ID3
决策树算法是一种有监督的分类学习算法.利用经验数据建立最优分类树,再用分类树预测未知数据. 例子:利用学生上课与作业状态预测考试成绩. 上述例子包含两个可以观测的属性:上课是否认真,作业是否认真,并以 ...
- jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明
jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...