图像基本操作

思考1:像素点和矩阵值的对应关系,一个像素点中对应一个矩阵有n个值?
对于灰度图像,一个像素点 仅由一个数值表示,这个值代表该点的亮度或灰度。
对于彩色图像,通常情况下图像中一个像素点由多个数值(通道)组合而成,共同描述该点的颜色,如RGB格式图像。
RGB格式图像每个像素点由红、绿、蓝三个值组成,图像是三个二维矩阵的叠加,这三个矩阵分别对应R、G、B通道。
在这里插入图片描述
在这里插入图片描述
waitKey()表示图像显示的时间,参数为0表示任意键终止(如按空格、Enter等任意键),参数不为0时表示图像显示指定时间后关闭(如1000表示显示1s后关闭);
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
ret表示的是什么意思?
ret是return的缩写,本质是一个布尔值(True/False),它用来标识:是否成功从视频 / 摄像头中读取到一帧图像。
cv2.waitKey(100)&0xFF == 27怎么去理解这段代码?
27表示的是退出键,100是每一帧之后的等待时间,这句话大概意思是每一帧100ms等待时间(对应视频速度放慢),然后按退出键可以退出视频;
在这里插入图片描述
ROI感兴趣区域截取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
numpy的数值加法计算,如img_cat+img_cat2加完之后的结果相当于%256取余,得到38,46等等;
在这里插入图片描述
cv2中的数值加法计算,相当于加完最大保留到255数值,而不是取余再计算得到结果;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

阈值与平滑处理

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

图像形态学操作

在这里插入图片描述

图像梯度运算

在这里插入图片描述

边缘检测

在这里插入图片描述

图像金字塔与轮廓检测

在这里插入图片描述

直方图均衡化与傅里叶变换

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

傅里叶变换思想:当我们在图像中进行处理的过程中,希望速度或效率更简单高效一些,通常先把图像映射到频域空间中,在频域做一些处理比在原始图像中做处理容易得多;
低通滤波器、高通滤波器;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目实战——信用卡识别

如果要用模板匹配的识别方法,需要先找出一个跟当前要做的事非常接近的一个模板;
信用卡识别步骤(基于模板匹配的识别方法):
①对模板中的数字以及输入图像进行轮廓检测,选择轮廓检测完的外轮廓(轮廓检测前要进行图像灰度化、二值化、滤波等预处理操作);
②获取到当前模板中所有轮廓对应的外接矩形;
③将模板和输入图像进行模板匹配,识别信用卡数字;(匹配过程中由于数字轮廓对应的大小size不一样,需要先进行Resize操作转换成相同的大小size)
在这里插入图片描述
在这里插入图片描述
信用卡识别实战:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Otsu方法是一种自动确定图像阈值的算法,它可以根据图像的灰度分布自适应地选择最佳阈值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提取到的轮廓往外扩,保证轮廓区域够大容易检测到数字;
在这里插入图片描述
要做模板匹配,所以这里Resize大小要跟模板做的大小一样;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目实战——文档扫描OCR识别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用OCR开源工具包进行光学字符识别,识别出中英文或数字结果;
在这里插入图片描述
图像预处理:
在这里插入图片描述
轮廓检测:
在这里插入图片描述
cv2.approxPolyDP 是一个强大的工具,可以简化和近似多边形形状,为后续的图像处理任务提供更有效的表示形式。
其中0.02*peri是对应的epsilon参数,这个参数控制了近似的精度,epsilon 越小,近似的多边形越接近原始曲线,保留的点数也越多;epsilon 越大,逼近的多边形越简单(点数越少)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
透视变换:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
tesseract开源OCR识别工具包的使用
在这里插入图片描述
在这里插入图片描述
tesseract全局变量找不到的问题避坑:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像特征——Harris

在这里插入图片描述
基本原理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像特征——sift

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

案例实战-全景图像拼接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当我们对图像进行图像拼接或对图像进行投影变换、角度变换的过程中,最少需要有4对特征点;
在这里插入图片描述
通过机器学习算法和loss function回归,比如通过随机抽样一致算法(RANSAC)找到最适合4对特征点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图像拼接的流程:①求变换矩阵(把图像进行旋转、内凹、拉伸等操作);②对两张图像经过SIFT特征提取、H矩阵变换、特征匹配后,求得拼接后的图像结果;
在这里插入图片描述
拼接完成的最终结果:
在这里插入图片描述
整体流程解读:
在这里插入图片描述
SIFT特征提取部分:
在这里插入图片描述
关键点匹配部分:
在这里插入图片描述
图像拼接函数部分1:
在这里插入图片描述
RANSAC算法匹配+H矩阵计算返回
在这里插入图片描述
图像拼接函数部分2:
在这里插入图片描述
图像拼接函数部分3:
在这里插入图片描述
图像拼接函数部分4:
在这里插入图片描述
主函数:
在这里插入图片描述

项目实战——答题卡识别判卷

整体流程与效果
在这里插入图片描述
预处理操作函数部分1:图像灰度化——高斯滤波(去除噪音)——Canny算子边缘检测
在这里插入图片描述
预处理操作函数部分2:透视变换——Otsus阈值处理——遍历排序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可能会出现实际涂卡超出圆圈外,这是用霍夫变换检测圆圈效果不好
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐