OpenCV随笔003-如何存取像素值
来源:互联网 发布:java ee javaweb 编辑:程序博客网 时间:2024/05/02 13:00
像素是图像的基本元素,从根本上来说,一张图像是一个由数值组成的矩阵,矩阵的每一个元素代表一个像素,对于灰度图像来说,像素由8位无符号数来表示的(0-255),对于彩色图像来说,每个像素需要3个8位无符号数来表示红绿蓝三个颜色通道,这样的矩阵元素为三元数。
为了获取矩阵元素,需要在代码中指定元素所在的行和列,程序会返回相应的元素。如果图像是单通道的,返回值是单个数值;如果图像是多通道的,返回值则是一组向量(Vector)。
类cv::Mat有若干成员函数可以获取图像的属性。公有成员变量cols和rows给出了图像的宽和高。成员函数at(int y,int x)可以可以用来存取图像元素。
这里我们通过一个简单的函数来说明如何直接存取像素值,这个函数能在图像中加入椒盐噪点。通过调用这个函数来实现像素的存取。
#include<opencv2/opencv.hpp>using namespace cv;void salt(Mat &image,int n){for(int k=0;k<n;k++){int i=rand()%image.cols;int j=rand()%image.rows;if(image.channels()==1)//灰度图{image.at<uchar>(j,i)=255;}else if(image.channels()==3)//彩色图{image.at<Vec3b>(j,i)[0]=255;image.at<Vec3b>(j,i)[1]=255;image.at<Vec3b>(j,i)[2]=255;}}}
下面是主程序:
#include"opencv2/opencv.hpp"using namespace cv;void salt(Mat&, int n); int main(){srand(getTickCount());//初始化随机数发生器Mat image=imread("Demo.jpg",1); if(!image.data)return -1;namedWindow("src");imshow("src",image);salt(image,7000);namedWindow("dst");imshow("dst",image);imwrite("salted.bmp",image);waitKey(3000);return 0;}
处理的结果如图所示:
0 0
- OpenCV随笔003-如何存取像素值
- OpenCv笔记1-存取像素值
- OpenCV学习之一: 存取像素值
- OpenCV存取像素值操纵汇总
- opencv学习(一)存取像素值
- Opencv像素存取
- OpenCV学习篇之四 存取像素值
- 存取像素值操作
- OpenCV学习笔记(二):存取像素
- 操作像素(一)--存取像素值
- 存取像素值操作汇总
- 存取像素值操作汇总
- OpenCV学习笔记(四十三)——存取像素值操作汇总core
- OpenCV学习笔记(四十三)——存取像素值操作汇总core
- OpenCV学习笔记——存取像素值操作汇总core
- 学习《OpenCV 2 计算机视觉编程手册》第二章存取像素值案例--椒盐噪声
- opencv关于存取图像像素操作的汇总
- opencv各通道像素坐标数据的存取
- 还是老老实实地回来了
- 多线程读书笔记二(java内存模型、volatile变量、内存模型与synchronized、CAS)
- Blend 3.0入门之SketchFlow详解(下)
- pku 3233 Matrix Power Series
- android基础入门控件详解(5)
- OpenCV随笔003-如何存取像素值
- 根据字体多少使UILabel自动调节尺寸
- arm 中汇编.S文件注意与不懂
- 图论模板
- php 简评file_get_contents与curl 效率及稳定性
- AJAX请求异常代码含义
- linux下的进程等待(wait和waitpid)
- 点运算中的伽马gamma变换
- 认识Mahout下的云计算机器学习