前言
- 基础包 opencv-python
- 高配版 opencv-contrib-python
一、图像基础
1.1 理论介绍
使用了cv2.imread()即改变了存储格式:
由 jpg:rgb—>opencv:bgr
一张图像 处理:
- 1.三维数组
- 2.画过三维散点图
- 3.图像的直方图:统计像素点的分布特征 灰度图
- 三维的彩色图 ==》转为一维的灰度图片
- 画直方图
- ravel()方法将数组维度拉成一维数组
- hist函数作用----绘制直方图
1.2 案例1-手写数字识别
输入一张图:识别该数字
opencv 清除数字图片里的杂乱的线条和杂点,把杂线都滤除掉,只保留数字线条
- 创作图片
选作最粗的线条写数字,此外用其他的线条(不能用最粗的)进行添加和点缀
-
数字识别
-
生成验证码 pip install captcha
-
要取得该文件夹下的所有文件,可以使用for (root, dirs, files) in walk(路径名)函数。
二、图像滤波与预处理
Opencv 滤波和边沿检测 :车道线的识别
‘’’
识别图像里的几何特征,比如:线 圆 方块
1.灰度化 彩色图转换为灰度图
2.滤波 为了边缘检测做准备 为什么在边缘检测之前做滤波呢? 噪点对边缘检测的干扰 消除噪点影响
3.边缘检测 Canny Sobel 拉普拉斯 >求相邻或者相近像素点的差值(像素差)
4.形状特征检测 Hough变换
‘’’
2.1 滤波
-
均值滤波
-
设置椒盐噪声
-
高斯滤波–必须是奇次项
-
中值滤波–必须是奇数项
2.2 边缘检测
- Canny
- Sobel
- 拉普拉斯
三、图像变换
- 仿射变换
- 透视变换
3.1 仿射变换
二维到二维图,平移,旋转,缩放等操作
- 平移
- 缩小再平移
- 旋转
3.2 透视变换
二维变换成三维空间中再投影到一个新的平面 也称:投影映射
作用1:转到真实图像平面 作用2:对原始采集图像做变换或,提高图像识别准确率
pst1:原图中的坐标点
pst2:要生成的坐标点