在OpenCV中,图像是按照矩阵的形式存储的,IplImage继承至CvMat,CvMat继承至CvArr,但CvArr只是一个抽象的类,这里还是要去关注CvMat。
CvMat跟线性代数中的矩阵相比要更加抽象一下,抽象在矩阵中的元素可以使任意预定义的类型,预定义类型的结构如下,CV_<bit_depth>(S|U|F)C<number_of_channels>。。。。矩阵的结构在此省略。
给图像添加椒盐噪声,既在改变图像中一些随机像素点的RGB值,对矩阵中元素的读取采用cvPtr2D(const CvArr* arr,int idx0(列),int idx1(行),int type=NULL),第一个变量是我们读取的图像,第二第三变量是图像像素点的索引值(就是列和行的值),最后一个是可选的参数,它表示输出值的类型(暂时搞不清。。)。cvPtr2D()函数返回的是一个指向这个像素点的指针,取到了像素要对像素内的RGB值进行写入,对于RGB三通道的彩色图像,像素点中颜色值的存储是按照BGR的顺序连续存储的,所以一副三通道的RGB图像会是按照