opencv入门学习1

1.图像

加载图像 imread(“路径”,-1原图/0灰度图/1RGB图)

修改图像 cvtColor (输入图像,输出图像,色域转换)
从一个色彩空间转换到另一色彩空间,COLOR_BGR2HLS、 COLOR_BGR2GRAY

保存图像 imwrite(保存路径,输入图像)

2.矩阵掩模

获取图像像素指针
Cv_Assert(mylmage depth()==CV 8U);

● Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。

●获得当前行指针
Mat myImage;
const uchar* current=mylmage.ptr(row);
获取当前像素点P( row,col)的像素值p( row, col)= current[col]

处理像素范围saturate_cast

saturate_cast(-100), 小于0, 返回0
saturate_cast(288), 大于255, 返回255
saturate_cast(100), 0-255之间, 返回100
确保RGB值在0-255之间

掩模操作

Mat kernel = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, dst, -1, kernel);

Mat m2 = Mat::zeros(src.size(), src.type());全黑图

3.复制

dst = Mat(src.size(), src.type()); //图像dst与src尺寸,类型相同
dst = Scalar(127, 0, 255); //赋值像素值
Mat dst = src.clone(); //克隆图像
src.copyTo(dst); //克隆src到dst

1.部分复制:只复制Mat对象的头和指针部分,不复制数据部分
Mat A = imread(imgFilePath);
Mat B(A);
即B与A的指针指向同个地址
2.完全复制:对象的头和数据 部分一起复制
Mate F = A.clone();或者 Mat G; A.copyTo(G);

cv::Mat::Mat构造函数

Mat M(2,2,CV_8UC3, Scalar(0,0,255))
其中前两个参数分别表示行(row)跟列(column)、第三个CV_8UC3中的8表示每个通道占8位、U表示无符号、C表示Char类型、3表示通道数目是3,第四个参数是向量表示初始化每个像素值是多少,向量长度对应通道数目一致

cv::Mat::create实现

Mat M;
M.create(4, 3, CV_8UC2);
M = Scalar(127,127);
cout << “M = " << endl << " " << M << endl << endl;
uchar* firstRow = M.ptr(0);
printf(”%d", *firstRow);

opencv入门学习1

参考文献:51CTO opencv讲义ppt