OpenCV入门笔记(二)

**

第二部分

**
第四章
1.Mat
Mat是个类,由矩阵头和志向存储所有像素值的矩阵的指针。
OpenCV的计数机制:每隔Mat对象有自己的信息头,但是共享一个矩阵(“=”)。(因为信息头不同但是矩阵相同,改变任何对象都会改变矩阵)
<可以创建只引用部分数据的信息头,例如创建一个区域,只需要创建包含信息的信息头即可>
如果复制不光有信息头还有矩阵,需要使用函数clone()或copyTo().
2.像素的存储方法
存储像素:指定颜色空间和数据类型。
颜色空间:针对一个给定的颜色,如何组合颜色元素以对其编码(RGB)
数据类型:元素定义域
3.创建Mat
Mat:图像容器类,还是一个通用的矩阵类

1. 使用Mat()构造函数           CV_[位数][带符号与否][类型前缀]C[通道数]
2. 在C\C++中通过构造函数进行初始化(P90)
3. 为已存在的IpIImage指针创建信息头(P90)
4. 利用create()函数
5. 采用Matlab式的初始化方式
6. 对小矩阵使用逗号分隔式初始化函数
7. 为已存在的对象创建新信息头

4.格式化输出方法
randu()函数产生随机值
format()可以改变输出风格
5种语言风格
5.常用数据结构
Point:二维坐标
Scalar:4个元素的数组,用于传递像素值(BGR)
Size:长、宽
Rect:x、y、width、height
cvtColor():颜色空间转换函数(P98)
6.其他常用知识点(P100)
7.基本图形绘制
line() ellipse() rectangle() circle() fillPoly()

第五章
1.访问图像中的像素
图像缩减:利用除法自动截余
LUT函数:Look up table操作 operationsOnArray:LUT() 用于批量进行图像元素查找、扫描与操作图像
计时函数:GetTickCount() getTickFrequency()
方位图像像素的三种方法:(P112)

1. 指针访问:C操作符(最快)
2. 迭代器iterator
3. 动态地址计算(最慢)

2.ROI区域图像叠加&图像混合
ROI和addWeighted函数结合使用,对指定区域进行图像混合操作
定义ROI两种方法:矩形区域和指定感兴趣行或列(Range) Range:从其实索引到终止索引(不包括终止索引)的一段连续序列(可以用cRange定义Range)
代码在 (E:\test\OpenCV_2\ROI_mask\ROI_mask)中
线性混合操作(P117)
计算数组加权和:addWeighted()函数 dst = src1[I] alpha +src2 beta + gamma;
示例程序:P118
3.分离颜色通道、多通道图像混合(P125)
通道分离:split()函数:多通道数组分离成几个单独通道数组 代码(P126)
通道合并:merge()函数:多个数组合并成一个通道的数组 代码(P127)
4.图像对比度、亮度值调整(P131)
点操作:特点:仅仅根据输入像素值(有时可以加上某些全局信息或参数),来计算相应的输出像素值。
对比度:g(x)=a*f(x)+b a可以调节图像对比度,b可以调节图像的亮度
5离散傅里叶变换(P135)
二维图像的傅里叶变换的数学公式,如下图
高频部分:图像的细节、纹理信息;
低频部分:图像的轮廓信息——–对图像使用低通滤波器,结果剩下了图像的轮廓
傅里叶变换:图像爱能够增强和去燥、图像分割之边缘检测、图像特征提取、图像压缩
dft()函数:对一位维或二维浮点数数组进行正向或反向的离散傅里叶变换 代码(P136)(没看懂)

1. 返回DFT最优尺寸大小:getOptimalDFTSize()     提高dft计算速度,来扩充图像
2. 扩充图像边界:copyMakeBorder()      
3. 计算二维矢量的幅值:magnitude()
4. 计算自然对数:log()      计算每个数组元素绝对值的自然对数
5. 矩阵归一化:normalize()

示例程序:离散傅里叶变换(P139和P141)

1. 载入原始图像
2. 将图像扩大到合适尺寸      图像尺寸2/3/5的整数倍,计算速度最快(调用getOptimalDFTSize()得到最佳尺寸、调用copyMakeBorder()用于填充像素)
3. 为傅里叶变换的结果(实部与虚部)分配存储空间(每个原图像值---得到两个图像值)至少将频域储存到float格式中,增加一个额外通道来存储附属部分
4. 进行离散傅里叶变换---dft(complexI,complexI)
5. 将复数转换为幅值   对应幅度值
6. 进行对数尺度缩放     鼓励也变换的幅值太大,需要取对数
7. 剪切和重分布幅度图象限     第二步中延扩了图像,现在需要将添加的像素剔除了    同时需要中心化
8. 归一化    为了显示(normalize())
9. 显示效果图

输入输出XML和YAML文件
XML:可拓展标识语言。 一种语义/结构化语言
YAML:以数据为中心的语言,不同于以置标语言为重点(但仍然是置标语言)

使用FileStorage类操作文件的使用引导

1. XML、YAML文件打开
2. 进行文件读写操作
3. vector(arrays)和maps的输入和输出
4. 文件关闭

详看P145

本文是碎片化的笔记,详见书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值