Python之图像处理OpenCV

Source


前言

  • 基础包 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:要生成的坐标点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述