1. mat 常见用法
Mat src
- src.empty() 判断mat是否为空,搭配
imread
判断文件是否存在 - src.data 头指针,通过判断是否为 NULL 也能判断图片是否存在
Mat的构造函数:
1 | // Mat的构造函数 |
注意:以下几个拷贝的区别
1 | // 拷贝构造函数,但是不会去拷贝内容操作的还是原来的图 |
2. 图像操作
图像截取(不涉及创建新的内容)
1 | // 区域截取(不涉及创建新的内容) |
读取像素
mat.at<Vec3b>(i,j)
1 | int main(){ |
3. 图像混合
mat.add(src1,src2,dst)
注意两张图片的大小必须一致(效果很生硬,直接是像素相加)
不一定非得是 alpha + beta = 1; dst(x) = saturate_cast(src(x)alpha + logo(x)beta + gamma)addWeighted(src,0.8,logo,0.2,0.0,dst)
//注意两张图片的大小必须一致
1 | int main(){ |
4.饱和度、亮度和对比度
概念
- 饱和度:指的其实是色彩的纯度,纯度越高,表现越鲜明,纯度较低,表现则较黯淡。 红色,淡红,鲜红,红得发紫等等 R -> 1.2R B -> 1.2B G -> 1.2G
- 亮度:亮暗的程度
- 对比度: 图像对比度指的是 [1] 一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小
修改像素:alpha*R(G B) + beta;
alpha控制饱和度和对比度,beta控制亮度
1 | int main(){ |