代码已托管GitHub,仓库地址:OpenCV3-note,以下为仓库的README.md,介绍仓库信息及代码结构:


OpenCV

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。

OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。


Demo环境

cv:4.0.0
numpy:1.16.2
python:3.6.1 (v3.6.1:69c0db5, 3月21日 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]

代码及笔记结构

  • chapter1
  • Python-OpenCV的虚拟环境安装测试、Github的命令操作等准备工作
  • chapter2
  • OpenCV图像的处理操作:获取图像信息(通道、大小等)、图像倒置(利用循环、利用numpy)、摄像头操作,同样可以运用于视频等。
  • 色彩空间:色彩空间的转换、学会使用inRange、通道分离合并。
  • 图像像素运算:加减乘除、与或非、均值方差、对比度亮度等操作。
  • chapter3
  • ROI(Region of onterest) 和 泛洪填充:图像的矩形提取、泛洪填充demo、二值图像填充。
  • 图像模糊操作:均值模糊(随机噪声)、中值模糊(椒盐噪声)、自定义模糊。
  • 高斯模糊:比均值模糊去噪效果更好,对高斯噪声效果较好。
  • chapter4
  • 图像的直方图:直方图的均衡化、直方图的比较(巴氏距离、直方图相关性、卡方)。
  • 直方图反向投影。
  • 图像二值化:OTSU、Triangle(单波峰)、局部域值、自定义域值、超大图像二值化(分块、全局域值 局部域值)。
  • 模板匹配:应用范围比较小,可能会受光线、噪声的影响,多种匹配方法:TM_SQDIFF_NORMED、TM_CCORR_NORMED、TM_CCOEFF_NORMED。
  • chapter5
  • 图像金字塔:reduce 降采样、expand 扩大。
  • 图像梯度:一阶导数和Sobel算子、Scharr算子;二阶倒数和Laplacian算子、自定义拉普拉斯算子。
  • 图像边缘提取:Canny边缘检测算法(对噪声敏感,所以先使用GaussianBlur除噪)。
  • chapter6
  • 直线检测(霍夫直线检测):HoughLines(直接划出直线)、HoughLinesP(自定义参数划出线段)。
  • 圆检测:霍夫园检测(对噪声敏感,所以需要去噪,如果不进行均值迁徙去噪,结果误差极大)。
  • 轮廓发现:1.去噪,2.灰度图像,3.二值图像,4.findContours发现轮廓,5.drawContours描绘轮廓,6.计算出轮廓,就可以进行轮廓的分析,如面积周长等。
  • 图像测量:图像中心点、图像面积测量、图像线段逼近(根据逼近的线段数得出图像形状)。
  • chapter7
  • 图像膨胀和腐蚀:彩色和灰度图像、单通道和多通道都支持。
  • 开闭操作:开操作(先腐蚀再膨胀,主要作用:去噪点,去掉小的干扰块)、闭操作(先膨胀再腐蚀,主要作用:填充小的封闭区域)。其他作用:水平或垂直直线提取、干扰线的去除。
  • 其他形态学操作:顶帽 tophat:原图像与开操作之间的差值图像、黑帽 blackhat:闭操作与原图像的差值图像、其他形态学操作 Gradient(梯度)。
  • 基于距离变换的分水岭算法流程:运用于图像分割。
  • chapter8
  • 基于级联检测器的人脸识别(haarcascade_frontalface_alt_tree.xml):需要光线较强的情况下才能比较准确。
  • 基于OpenCV+Tesserct-OCR的数字验证码识别:OpenCV预处理、Tesserct-OCR验证码识别。