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 教程 使用 图像金字塔 进行缩放 图像金字塔是视觉运用中广泛采用的一项技术.一个图像金字塔是一系列图像的集合 - 所有图像来源于同一张原始图像 - 通过梯次向下采样获得,直到达到 ...
随机推荐
- for in //for of //forEach //map三种对比
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...
- mysql 错误2002
ERROR 2002 (HY000): Can’t connect to local MySQL server throughsocket ‘/tmp/mysql.sock’ (2) 今天遇到的200 ...
- codeforces 185A Plant(推公式)
Plant [题目链接]Plant [题目类型]推公式 &题解: 这个是可以推公式的: 每年的总个数是4^n个,设n年时向上的个数是x个,向下的个数是y个,那么n+1年时,向上的个数是3* x ...
- Css预处理器---Less(三)
四.Color函数 1.less提供的颜色运算函数,颜色会被转换成HSL色彩空间,然后再通道级别进行操作,函数如下: lighten(@color, 10%); //return a color wh ...
- JDBC连接自定义sqlserver数据库实例名(多个实例)
java语言中,通过jdbc访问sqlserver2005(2008)数据库默认实例可以按常用的写法来写url连接.代码如下: <span style="font-size:12px; ...
- 关于hdfs 和hive的数据迁移
1. 迁移hdfs,使用hadoop 命令 hadoop distcp -pugp hdfs://localhost:9000/ hdfs://localhost:9000/ 此处示例仅作说明用 2 ...
- 从caffemodel里面导出参数
参见博文https://blog.csdn.net/u014510375/article/details/51704447
- fang99-三号线与四号线新盘
三号线与四号线新盘 http://www.fang99.com/buycenter/buildingsearch_map.aspx?projectid=0000011104 http://www.fa ...
- Python二分法查找
1.1二分前提是有序,,否则不可以2分,2分查找的时间复杂度是O(log n):排序后二分查找到适当的位置插入数值 lst = [37,99,73,48,47,40,40,25,99,51] def ...
- .NET Core Tools for Visual Studio 2015 安装失败
You may be blocked from installing the .NET Core Tooling Preview 2 for Visual Studio 2015 installer ...