1、创建窗口
c++写法:
python写法:
2、读取图片
c++写法,操作图像,将图像转换为hsv然后调整亮度值,转换会BGR格式显示
3、视频采集
录制视频
在这里插入图片描述
在这里插入图片描述
4、Mat的使用
深拷贝和浅拷贝
像素值操作: 1、根据下标操作 2、根据指针操作
像素值的加减乘除
GUI操作
addWeighted函数解释
5、异或操作
6、通道分离,通道合并
7、色彩空间转换
8、最大值、最小值
// 最大值、最小值 // 均值,方差 // 方差衡量数据集中值的离散程度,数据集中差异较小时,标准方差较小,差异较大时,方差较大(携带有效信息就越多) // 1、计算出均值 // 2、计算每个元素与平均值的差的平方 // 3、计算平方差的平均值,得到的平方差相加,然后除以数据点的总数 // 4、取平方根:将平均平方差的值进行平方根运算,得到标准方差。
9、绘制图像
10、多边形绘制
11、随机数
12、鼠标实时绘制矩形
13、归一化
13、normalize归一化原理解释 函数原型,归一化类型,常见的有NORM_L1, NORM_L2, NORM_INF, NORM_MINMAX,不同的norm计算方式不一样
注意: alpha:如果norm_type为NORM_MINMAX ,则alpha为最小值或最大值;如果norm_type为其他类型,则为归一化要乘的系数 beta:如果norm_type为NORM_MINMAX ,则beta为最小值或最大值;如果norm_type为其他类型,beta被忽略,此处不会被用到,一般传入0【重点】
13.1、NORM_L1
1、先求出norm 公式:L1_norm = ∥src1∥L1=∑I|src1(I)|,即各数的绝对值之和 2+3+4+5+3+4+5+4+5+6 = 36
2、再求dst 公式:dst = alphasrc/L1_norm dst[0] = 1
应用场景:机器学习、信号处理、图像去噪。 用途:L2规范化倾向于使得所有元素的大小都差不多,这在避免过拟合(如机器学习中的权重衰减)、信号去噪(通过最小化能量)等场景中非常有用。 优势:防止数据中的个别点对总体结果产生过大影响,提高模型的泛化能力。
13.2、NORM_L2
1、先求出norm 公式:L2_norm = 矩阵中各元素的平方和的开方(欧几里德)(L2-范数) 4+9+16+9+16+25+16+25+36 = 开平方之后 = 12.4899959967968
2、再求dst 公式:dst = alphasrc/L2_norm dst[0] = 1
应用场景:稀疏编码、特征选择、压缩感知。 用途:L1规范化倾向于产生稀疏的解,即大部分元素为零,少数元素非零。这在特征选择中特别有用,可以自动地忽略不重要的特征。 优势:促进稀疏性,有助于提高模型的可解释性,减少模型复杂度。
13.3、NORM_INF
1、先求出norm INF_norm = 矩阵中所有元素的最大值max
2.、再求dst 公式:dst = alphasrc/INF_norm dst[0] = 1.02/ 6 = 0.33333334
应用场景:优化问题、数值计算。 用途:限制数组或向量的无穷范数(即最大绝对值)。在某些优化问题中,可能需要将解的范围限制在一定界限内,使用NORM_INF规范化可以达到这一目的。 优势:保证了数据中没有极端的大值,有利于数值稳定性
13.4、NORM_MINMAX 1、 alpha、beta分别为归一化后的最小值、最大值 函数会自动判断哪个为最大值,最小值
在这里插入图片描述
应用场景:图像处理、数据预处理。 用途:将数据规范化到一个特定的范围内,常用于调整图像亮度和对比度,或在输入机器学习模型前将特征缩放到同一范围。这有助于提高算法的收敛速度和精度。 优势:简单直观,易于实现,可以使数据分布更均匀。
总结:
NORM_MINMAX适用于需要将数据规范化到相同尺度的场景。 NORM_INF适用于需要控制数据的最大值不超过特定阈值的场景。 NORM_L1适用于需要稀疏解的场景,如特征选择或构建稀疏模型。 NORM_L2适用于需要平滑解、防止过拟合的场景,如机器学习中的正则化处理。
14、resize操作
15、旋转翻转
16、视频操作
17、模糊操作
18、高斯模糊操作
在这里插入图片描述
19、边缘填充:cv::copyMakeBorder()
作用:在图像四周填充指定像素形成边框。
在这里插入图片描述
利用此函数,对图片进行padding操作
20、adaptiveThreshold函数
在这里插入图片描述
21、仿射变化之平移
第一行的(1,0,tx)和(x,y,1)一一对应相乘
在这里插入图片描述
22、仿射变化之获取变换矩阵,旋转矩阵
23、通过三个点来确定变换矩阵
24、透视变换
透视变换就是一种坐标系变换成另一种坐标系,简单来说可以把一张斜的图变正
25、卷积核
(1 * 1+1 * 0+1 * 1) + (0 * 0+1 * 1+1*0) + (0 * 1+0 * 0+1 * 1) = 4在这里插入图片描述
计算padding填充多少
h2是卷积之后的高度,h1是原图像高度,f卷积核高度,p是填充多少,s是卷积核步长 h2 = (h1 - F + 2p)/s + 1
26、方盒、均值滤波
使用常量进行填充,卷积核里面
输出结果: dst:[ 4, 13, 14, 13, 5; 9, 21, 23, 22, 10; 9, 20, 22, 21, 10; 15, 21, 20, 15, 9; 10, 12, 11, 6, 3]
在这里插入图片描述
默认使用的是BORDER_REFLECT_101 ,即用以最边缘像素为轴,进行复制,所以结果就是一下结果
在这里插入图片描述
在这里插入图片描述
27、高斯滤波
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
28、中值滤波
原理:取卷积核的中位数,作为卷积核的结果,当卷积核在图像上进行移动,获取到的数之后进行排序,取中位数作为卷积核的结果。
注意:默认中值滤波默认填充方式是,使用边界像素的复制来进行填充
在这里插入图片描述
输出结果: dst:[ 5, 7, 9, 9, 9; 13, 15, 19, 19, 12; 13, 15, 19, 19, 12; 23, 23, 21, 12, 7; 31, 21, 12, 7, 7]
29、sobel算子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
30、scharr算子
在这里插入图片描述
31、拉普拉多算子
边缘处的二阶导数=0,我们可以利用这一特征去寻找图像的边缘,注意:二阶导数为0的位子也可能是无意义的位置(噪声)
在这里插入图片描述
在这里插入图片描述
32、canny算子
在这里插入图片描述
在这里插入图片描述
33、腐蚀、膨胀操作
膨胀操作时腐蚀操作相反的操作,基本原理只要保证卷积核的锚点为0,其他部位不管是否为0,都会变成非0
在这里插入图片描述
在这里插入图片描述
34、开运算、闭运算
开运算:腐蚀之后在膨胀(提供另一种,去除图像外噪声的思路) 闭运算:膨胀之后腐蚀 去除图像内部噪声在这里插入图片描述
35、形态学梯度
梯度 = 原图 - 腐蚀之后图 腐蚀之后的图变小, 原图减去腐蚀之后的图就会的到,腐蚀掉的边缘信息
36、顶帽操作
顶帽 = 原图 - 开运算(腐蚀+膨胀) 开运算是去除外图形外的噪音,原图减去开运算就得到,去除的外噪声
37、黑帽操作
黑帽操作 = 原图 - 闭运算(膨胀 + 腐蚀) 闭运算是去除图形内部的噪声,原图减去闭运算就得到,去除的内噪声
38、图像轮廓
图像轮廓是具有相同颜色灰度连续的轮廓点的曲线
在这里插入图片描述
从右到左,从里到外
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
39、图像金字塔
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述