您好,欢迎访问一九零五行业门户网

opencv2对读书笔记操作图像1

一些小概念 1.从根本上来说,一张图像是一个由数组成的矩阵。这也是opencv2用cv::mat这个数据结构来表示图像的原因。 2.矩阵的每一个元素代表一个像素。对于灰度图像,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像素需要
一些小概念
1.从根本上来说,一张图像是一个由数值组成的矩阵。这也是opencv2用cv::mat这个数据结构来表示图像的原因。
2.矩阵的每一个元素代表一个像素。对于灰度图像,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像素需要三个这样的8位无符号数来表示三个颜色通道。这种情况下矩阵元素是一个三元数。
(1)关于矩阵元素的存取
书中举了一个椒盐噪点的例子
#include #include void salt(cv::mat &image, int n) { int i,j; for (int k=0; k(j,i)= 255; } else if (image.channels() == 3) { //三通道,彩色图 image.at(j,i)[0]= 255; image.at(j,i)[1]= 255; image.at(j,i)[2]= 255; } }}int main(){ srand(cv::gettickcount()); // 产生随机种子 cv::mat image= cv::imread(2.jpg,0); salt(image,5000); cv::namedwindow(image); cv::imshow(image,image); cv::imwrite(salted.bmp,image); cv::waitkey(5000); return 0;}
结果图像
opencv2里使用at这个函数对矩阵元素经行存取
(2)使用指针变量图像
书中给了一个颜色缩减的例子
#include #include #include void colorreduce(cv::mat &image, int div=64) { int nl= image.rows; int nc= image.cols * image.channels(); for (int j=0; j 结果图像

其它类似信息

推荐信息