一些小概念
1.从根本上来说,一张图像是一个由数值组成的矩阵。这也是OpenCV2用cv::Mat这个数据结构来表示图像的原因。
2.矩阵的每一个元素代表一个像素。对于灰度图像,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像素需要三个这样的8位无符号数来表示三个颜色通道。这种情况下矩阵元素是一个三元数。
(1)关于矩阵元素的存取
书中举了一个椒盐噪点的例子
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
void salt(cv::Mat &image, int n) {
int i,j;
for (int k=0; k<n; k++) {
i= rand()%image.cols;
j= rand()%image.rows;
if (image.channels() == 1) { //单通道,灰度图
image.at<uchar>(j,i)= 255;
} else if (image.channels()