Opencv-图像处理理论与实例操作(二)

本节内容上接这篇博客:

  • Opencv-图像操作与处理入门基本知识(一)

文章目录

    • 2.7 图像阈值与平滑处理
      • 2.7.1 阈值处理
      • 2.7.2. 平滑处理
        • 均值滤波
        • 方框滤波
        • 高斯滤波
    • 2.8 图像梯度 ⭐
      • 2.8.1 Sobel算子
      • 2.8.2 Scharr算子
      • 2.8.3 laplacian算子
      • 2.8.4 边缘检测原理⭐
      • 2.8.5 Canny边缘检测⭐⭐
      • 2.8.6 图像轮廓
  • 三、 直方图与傅里叶变换
    • 3.1 灰度直方图
      • 3.1.1 掩膜的应用
    • 3.2 直方图均衡化
      • 3.2.1 自适应的直方图均衡化
    • 3.3 傅里叶变换⭐⭐⭐
  • 四、模板匹配和霍夫变换
    • 4.1 模板匹配
        • 匹配多个对象
    • 4.2 霍夫变化
      • 4.2.1 原理解释
      • 4.2.2 霍夫线检测
      • 4.2.3 霍夫线检测
  • 总结

笔记来源

  • (全)基于python的Opencv项目实战
  • 黑马程序员人工智能教程_10小时学会图像处理OpenCV入门教程

2.7 图像阈值与平滑处理

  • 理解阈值

理解阈值是干什么的?
Opencv-图像处理理论与实例操作(二)_第1张图片
假如有如图上的像素点数值,对于每一个像素点值进行判断:该像素点大于阈值如何处理,小于阈值如何处理
这就是阈值函数要做的事情

2.7.1 阈值处理

Opencv-图像处理理论与实例操作(二)_第2张图片

  • 实例
    Opencv-图像处理理论与实例操作(二)_第3张图片

2.7.2. 平滑处理

平滑处理:即滤波操作

Opencv-图像处理理论与实例操作(二)_第4张图片

均值滤波

Opencv-图像处理理论与实例操作(二)_第5张图片

方框滤波

normalize = True :会做归一化,即进行核大小的计算,再除去核大小

在这里插入图片描述

高斯滤波

Opencv-图像处理理论与实例操作(二)_第6张图片

距离越近越重视,发挥的效果越好;越远发挥的效果不是那么好

Opencv-图像处理理论与实例操作(二)_第7张图片

  • 知识博客
  1. 图像与滤波
  2. 高斯模糊的算法
  3. 简单易懂的高斯滤波
  • 中值滤波

中值:从小到大排序,找到中间的数值

在这里插入图片描述

  • 展示所有
    在这里插入图片描述
    Opencv-图像处理理论与实例操作(二)_第8张图片
    在这里插入图片描述

2.8 图像梯度 ⭐

Opencv-图像处理理论与实例操作(二)_第9张图片

这条线左右两边都是白色一样,这条线不会产生梯度,因此边缘会产生梯度

Opencv-图像处理理论与实例操作(二)_第10张图片

这个点左边是0(黑)右边是255(白),左右两边梯度大一些 类似边缘检测

2.8.1 Sobel算子

算法简单,实际应用效率高于canny边缘检测效率,但是准确度是低于canny的

Sobel算子是高斯平滑与微分操作的结合体:抗噪声能力强,适用于效率要求较高,细纹处理要求不高的时候

Opencv-图像处理理论与实例操作(二)_第11张图片

考虑水平(Gx)和竖直(Gy)两个方向
右减左,下减上

Opencv-图像处理理论与实例操作(二)_第12张图片

  • 函数
    在这里插入图片描述

将sobel算子的部分中ksize设为-1,就是利用Scharr进行边缘检测

  • 实例
  1. 计算水平方向
    Opencv-图像处理理论与实例操作(二)_第13张图片
  • 思考:上述图像为什么只有一半的圆?
    Opencv-图像处理理论与实例操作(二)_第14张图片
    Opencv-图像处理理论与实例操作(二)_第15张图片
  • 如何做处理让右边圆显示出来?
    Opencv-图像处理理论与实例操作(二)_第16张图片
    Opencv-图像处理理论与实例操作(二)_第17张图片
  1. 计算竖直方向
    Opencv-图像处理理论与实例操作(二)_第18张图片
  2. 计算G
    在这里插入图片描述
    Opencv-图像处理理论与实例操作(二)_第19张图片

此处建议分开计算Sobelx,Sobely,再计算整体

  • 整体计算
    Opencv-图像处理理论与实例操作(二)_第20张图片
    Opencv-图像处理理论与实例操作(二)_第21张图片

  • 分开计算
    Opencv-图像处理理论与实例操作(二)_第22张图片

  • 实例 lena图像

  • 原图
    在这里插入图片描述
    Opencv-图像处理理论与实例操作(二)_第23张图片

  • 分开计算
    Opencv-图像处理理论与实例操作(二)_第24张图片

  • 直接计算
    Opencv-图像处理理论与实例操作(二)_第25张图片

  • 注意
    Opencv-图像处理理论与实例操作(二)_第26张图片

2.8.2 Scharr算子

使结果差异更明显(数值更大)

Opencv-图像处理理论与实例操作(二)_第27张图片

2.8.3 laplacian算子

中文名称:拉普拉斯算子

对噪音点敏感,可能并不是好事,因为一些噪音点并不是一些边界

Opencv-图像处理理论与实例操作(二)_第28张图片

  • 算子综合实例
    Opencv-图像处理理论与实例操作(二)_第29张图片
  • 详细讲解
  1. sobel算子,scharr算子,Laplacian算子
  2. 图像边缘检测之 Sobel、Scharr、拉普拉斯算子、Canny

2.8.4 边缘检测原理⭐

边缘检测原理是图像处理和计算机视觉中的基本问题,边缘检测的目标标识数字图像中亮度变化明显的点
图像中属性中的显著变化通常反应了属性的重要事件和变化。

Opencv-图像处理理论与实例操作(二)_第30张图片

图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关地信息,保留了图像重要地结构属性。

常用的边缘检测方法可以分为两类:

  1. 基于搜索
  2. 基于零穿越
  • 基于搜索
    Opencv-图像处理理论与实例操作(二)_第31张图片
  • 基于零穿越
    Opencv-图像处理理论与实例操作(二)_第32张图片

2.8.5 Canny边缘检测⭐⭐

  • 头衔

被认为是最优的边缘检测算法

  • 算法步骤
  1. 噪声去除
    由于边缘检测很容易收到噪声的影响,所以首先使用5*5高斯滤波器去除噪声【具体看平滑处理章节中的高斯滤波
  2. 计算图像梯度
    计算图像中每个像素点的梯度强度和方向
    Opencv-图像处理理论与实例操作(二)_第33张图片
  3. 非极大值抑制
    在获得梯度的大小和方向之后,对整幅图像进行扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。如下图:
    Opencv-图像处理理论与实例操作(二)_第34张图片
    Opencv-图像处理理论与实例操作(二)_第35张图片
    通俗讲解如上图,最后选择A-99%
  4. 滞后阈值
    应用双阈值检测来确定真实的和潜在的边缘
    Opencv-图像处理理论与实例操作(二)_第36张图片
  5. 通过抑制孤立的弱边缘最终完成边缘检测
  • 算法步骤详解
  1. 高斯滤波器

高斯滤波器:中间点比较大,边缘比较小

Opencv-图像处理理论与实例操作(二)_第37张图片

  1. 梯度和方向

使用的Sobel算子
具体看图像梯度中的Sobel算子

  1. 非极大值抑制
  • 方法一
    Opencv-图像处理理论与实例操作(二)_第38张图片
  • 方法二
    Opencv-图像处理理论与实例操作(二)_第39张图片
  1. 双阈值检测
    Opencv-图像处理理论与实例操作(二)_第40张图片

minval取值较小:希望检测的边界尽可能多,但是结果可能是不是边界的也认为成边界;minval取值较大,要求高,只有极为边界的时候才有可能拿出来

Opencv-图像处理理论与实例操作(二)_第41张图片

综上两幅图像,阈值大小的设定要自己进行测试,并不是越大或者越小合适

  • API

canny = cv2.Canny(image,threshold1,threshold2)
参数:

  • image:灰度图
  • threshold1:minval较小的阈值将间断的边缘连接起来
  • threshold2:maxval较大的阈值检测图像中明显的边缘
  • 示例
import cv2 as cv
import numpy as np

path = 图片路径
img = cv.imread(path)

# 边缘检测
lowThreshold = 0   # minval
max_lowThreshold = 100   #maxval
canny = cv.Canny(img,lowThreshold,max_lowThreshold )

# 图像显示
...

Opencv-图像处理理论与实例操作(二)_第42张图片

  • 算子比较
    Opencv-图像处理理论与实例操作(二)_第43张图片

2.8.6 图像轮廓

  • 什么叫轮廓

先前边缘检测的部分是零零散散的线段,不能称之为轮廓。轮廓应该是整体,连接在一起的是轮廓。

  • API
    Opencv-图像处理理论与实例操作(二)_第44张图片
    Opencv-图像处理理论与实例操作(二)_第45张图片

为了更高的准确率,使用二值图像

  • 步骤⭐
  1. 读取数据
  2. 转换为灰度图
  3. 图像阈值处理(对图像数据进行二值处理)
  4. 调用轮廓检测函数
  • 原图
    Opencv-图像处理理论与实例操作(二)_第46张图片
  • 处理结果图
    Opencv-图像处理理论与实例操作(二)_第47张图片
  • 步骤解析
    Opencv-图像处理理论与实例操作(二)_第48张图片
    在这里插入图片描述
    在这里插入图片描述

保存的是轮廓信息

  • 绘制轮廓

直接使用cv.inread()读取的原图想绘制轮廓

在这里插入图片描述

该方法中的参数 -1自己测试即可

Opencv-图像处理理论与实例操作(二)_第49张图片

注意此时再进行原图像展示:

Opencv-图像处理理论与实例操作(二)_第50张图片

因此,需要复制img,img_ = img.copy()

  • 轮廓特征

可以进行图片中每一个轮廓的面积

Opencv-图像处理理论与实例操作(二)_第51张图片

  • 轮廓近似

将曲线可以近似成直线,类似将一条曲线不断地近似成直线,如果一条直线不可以,则两条、三条、直到可以。。

Opencv-图像处理理论与实例操作(二)_第52张图片

Opencv-图像处理理论与实例操作(二)_第53张图片
Opencv-图像处理理论与实例操作(二)_第54张图片
Opencv-图像处理理论与实例操作(二)_第55张图片
Opencv-图像处理理论与实例操作(二)_第56张图片
Opencv-图像处理理论与实例操作(二)_第57张图片

  • 边界矩形
    Opencv-图像处理理论与实例操作(二)_第58张图片
    Opencv-图像处理理论与实例操作(二)_第59张图片
    Opencv-图像处理理论与实例操作(二)_第60张图片
  • 外接圆
    Opencv-图像处理理论与实例操作(二)_第61张图片

三、 直方图与傅里叶变换

Opencv-图像处理理论与实例操作(二)_第62张图片

3.1 灰度直方图

直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的bin当中.其中,bin为直方图中经常用到的一个概念,可以译为“直条”或“组距",其致值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。
图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素个数
这种直方图中,横坐标的左侧为较暗的区域,而右侧为较亮的区域。因此一张较暗图片的直方图中的数据多集中于左侧和中间部分,而整体明亮、只有少量阴影的图像则相反。

Opencv-图像处理理论与实例操作(二)_第63张图片

注意直方图是根据灰度图进行绘制的,而不是彩色图像。假设有一张图像的信息(灰度值0-255,已知数字的范围包含256个值,于是可以按一定规律将这个范围分割成子区域(也就是bins)
[0, 255) = [0, 15] U ]16, 30] …U [240, 255]
Opencv-图像处理理论与实例操作(二)_第64张图片

  • 直方图的一些术语和细节:
  • dims:需要统计的特征数目。在上例中,dims =1,因为仅仅统计了灰度值;要统计RGB三色的即dims = 3
  • bins:每个特征空间子区段的数目,可译为“直条"或“组距”,在上例中,bins = 16.
  • range:要统计特征的取值范围。在上例中,range =[0,255].
  • 直方图的意义:
  • 直方图是图像中像素强度分布的图形表达方式。
  • 它统计了每一个强度值所具有的像素个数
  • 不同的图像的直方图可能是相同的

cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumualte]])
Opencv-图像处理理论与实例操作(二)_第65张图片

Opencv-图像处理理论与实例操作(二)_第66张图片
Opencv-图像处理理论与实例操作(二)_第67张图片
Opencv-图像处理理论与实例操作(二)_第68张图片
Opencv-图像处理理论与实例操作(二)_第69张图片

3.1.1 掩膜的应用

Opencv-图像处理理论与实例操作(二)_第70张图片

  • 示例一
# 创建掩膜
mask = np.zeros(img.shape[:2],np.unit8)
mask[400:650,200,500] = 1

plt.imshow(mask,cmap=plt.cm.gray)

mask_img = cv.bitwize_and(img,img,mask=maks) # 与操作

plt.imshow(mask_img ,cmap=plt.cm.gray)

mask_hist = cv.calcHist([img],[0],mask,[256],[0,256])
plt.plot(mask_hist) # 折线图
plt.show()

Opencv-图像处理理论与实例操作(二)_第71张图片

  • img.shape[:2]问题
img.shape[:2] 表示取彩色图片的长、宽。
img.shape[:3] 则表示取彩色图片的长、宽、通道。

关于img.shape[0][1][2]
img.shape[0]:图像的垂直尺寸(高度)
img.shape[1]:图像的水平尺寸(宽度)
img.shape[2]:图像的通道数

在矩阵中,[0]就表示行数,[1]则表示列数


import cv2
image=cv2.imread("D:/shape.bmp")
print(image.shape[0])
print(image.shape[1])
print(image.shape[2])
结果
300
200
3
  • 示例二
    Opencv-图像处理理论与实例操作(二)_第72张图片

如何获得上述图像?
要保存图像的部分设置为255:mask[100:300,100:400] = 255

Opencv-图像处理理论与实例操作(二)_第73张图片

3.2 直方图均衡化

  1. 原理与应用
    Opencv-图像处理理论与实例操作(二)_第74张图片
    Opencv-图像处理理论与实例操作(二)_第75张图片
  • API
dist = cv.equalizeHist(img)
  • 示例
dist = cv.equalizeHist(img)
plt.inshow(dist,cmap=plt.cm.gray) # 均衡化图像
plt.inshow(img,cmap=plt.cm.gray)  # 原始图像

Opencv-图像处理理论与实例操作(二)_第76张图片
Opencv-图像处理理论与实例操作(二)_第77张图片

有些地方会更亮,有些地方也会变暗(例如猫退或者猫尾)

3.2.1 自适应的直方图均衡化

Opencv-图像处理理论与实例操作(二)_第78张图片
Opencv-图像处理理论与实例操作(二)_第79张图片

  • API
cv.createCLAHE(clipLimit,tileGridSize)
参数:clipLimit:对比度限制,默认是40
	  tileGridSize:分块的大小,默认8*8

Opencv-图像处理理论与实例操作(二)_第80张图片

  • 小结
    Opencv-图像处理理论与实例操作(二)_第81张图片
  • 局部直方图均衡化效果⭐
    Opencv-图像处理理论与实例操作(二)_第82张图片

calhe.apply(img) :对img进行限制对比度自适应直方图均衡化

Opencv-图像处理理论与实例操作(二)_第83张图片

  • 参考博客
  1. 【图像增强】CLAHE 限制对比度自适应直方图均衡化
  2. Python+OpenCV图像处理(八)—— 图像直方图
  3. OpenCV-Python学习—对比度增强

3.3 傅里叶变换⭐⭐⭐

我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班…以时间为参照就是时域分析
但是在频域中一切都是静止的

傅里叶分析之掐死教程

  • 傅里叶变换的作用
  • 高频:变化刚烈的灰度分量,例如边界(变化剧烈的是高频)
  • 低频:变化缓慢的灰度分量,例如一片大海(变换缓慢的是低频)
  • 滤波
  • 低通滤波器:只保留低频,会使得图像模糊
  • 高通滤波器:只保留高频,会使得图像细节增强
  • opencv中主要就是cv2.dft()(和cv2.idft()-逆变换),输入图像需要先转换成np.fioat32格式
  • 得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现.
  • cv2.dt()返回的结果是双通道的(实部,虚部),通常还需要转换成图像格式才能展示(0,255)

Opencv-图像处理理论与实例操作(二)_第84张图片

  • 案例展示
  • 低频显示
    Opencv-图像处理理论与实例操作(二)_第85张图片
    Opencv-图像处理理论与实例操作(二)_第86张图片
  • 低通滤波器
    Opencv-图像处理理论与实例操作(二)_第87张图片
    Opencv-图像处理理论与实例操作(二)_第88张图片
  • 高通滤波器
    Opencv-图像处理理论与实例操作(二)_第89张图片
    Opencv-图像处理理论与实例操作(二)_第90张图片
    Opencv-图像处理理论与实例操作(二)_第91张图片

高通滤波器只保留了一些边界信息,没有留下一些细节信息

至此为止,我仍未理解傅里叶变换,若有通俗易懂的教程,欢迎留言,万分感谢

四、模板匹配和霍夫变换

4.1 模板匹配

Opencv-图像处理理论与实例操作(二)_第92张图片

方向:从左到右,从上到小

  • 概念原理

模板匹配:在给定的图片中查找和模板最相似的区域,该算法的输入包括模板和图片,整个任务的思路就是按照滑窗的思路不断地移动模板图片,计算其与图像中对应区域的匹配度与机器学习中的相似度概念类似】,最终将匹配度最高地区域选为最终的结果。

  • 实现流程
  1. 准备两幅图像
  • 原图像:在这幅图中,找到与模板匹配的区域
  • 模板:与原图像进行对比的图像块
  1. 滑动模板图像和原图进行比对:
    将模板快每次移动一个像素【从左到右,从上至下】,在每一个位置,都计算与模板图像的相似度
  2. 对于每一个位置将计算的相似结果保存在结果矩阵(R)中。如果输入图像的大小(WH),模板图像的大小(wh),则输出矩阵R的大小为(W-w+1,H-h+1)将R 显示为图像。
    Opencv-图像处理理论与实例操作(二)_第93张图片
    在这里插入图片描述
  3. 获得R后,查找最大值所在的位置,那么该位置对应的区域就被认为是最匹配的。对应的区域就是以该点为顶点,长宽和模板图像一样大小的矩阵。
  • API

res = cv.matchTemplate(img,tempate,method)
参数:
img :进行模板匹配的图像
Template :模板
method:实现模板匹配的算法:
Opencv-图像处理理论与实例操作(二)_第94张图片

Opencv-图像处理理论与实例操作(二)_第95张图片
Opencv-图像处理理论与实例操作(二)_第96张图片

  • 测试所有方法
    在这里插入图片描述
    Opencv-图像处理理论与实例操作(二)_第97张图片

  • 示例:

  1. 原图像
    Opencv-图像处理理论与实例操作(二)_第98张图片
  2. 模板图像
    在这里插入图片描述
  • 示例
import cv2 as cv
import numpy as  np

path_ori = 原图像路径
path_com = 模板图像路径

img = cv.imread(path_ori )
template = cv.imreda(path_com )

h,w,l = template.shape

# 模板匹配
res = cv.matchTemplate(img,template,cv.TM_CCORR) # 使用相关系数匹配 得到结果矩阵
# 返回图像中最匹配的位置 确定左上角的坐标,并将匹配位置绘制在图像上
min_val,max_val,min_loc,max_loc = cv.minMaxLoc(res)# 最小值  最大值  最小位置 最大位置

top_left = max_loc # 最大位置是最好的位置   top_left 左上角位置
bottom_right = (top_left[0]+w,top_left[1]+h)  # 右下角位置
cv.rectangle(img,top_left,bottom_right ,(0,255,0),2)

# 显示图像
plt.imshow(img[:,:,::-1])
plt.show()

Opencv-图像处理理论与实例操作(二)_第99张图片
Opencv-图像处理理论与实例操作(二)_第100张图片

  • 注意

模板匹配不适用于尺度变换,视角变换后的图像,这时我们就要使用关键点匹配算法,比较经典的关键点检测算法包括SIFT和SURF等,主要的思路是首先通过关键点检测算法获取模板和测试图片中的关键点;然后使用关键点匹配算法处理即可,这壁关键点可以很好的处理尺度变化、视角变换、旋转变化、光照变化等,具有很好的不变性。

匹配多个对象

Opencv-图像处理理论与实例操作(二)_第101张图片
Opencv-图像处理理论与实例操作(二)_第102张图片

4.2 霍夫变化

  • 用途

霍夫变化常用来提取图像中的直线和圆等几何形状

Opencv-图像处理理论与实例操作(二)_第103张图片

4.2.1 原理解释

Opencv-图像处理理论与实例操作(二)_第104张图片
Opencv-图像处理理论与实例操作(二)_第105张图片
Opencv-图像处理理论与实例操作(二)_第106张图片
Opencv-图像处理理论与实例操作(二)_第107张图片
Opencv-图像处理理论与实例操作(二)_第108张图片
Opencv-图像处理理论与实例操作(二)_第109张图片
Opencv-图像处理理论与实例操作(二)_第110张图片

Opencv-图像处理理论与实例操作(二)_第111张图片
Opencv-图像处理理论与实例操作(二)_第112张图片

  • 实现流程

假设有100*100的图片,使用霍夫变换检测图片中的线,步骤如下:

  1. Opencv-图像处理理论与实例操作(二)_第113张图片
  2. 在这里插入图片描述
  3. 在这里插入图片描述
  4. 在这里插入图片描述

4.2.2 霍夫线检测

  • API

cv2.HoughLines(img,rho,theta,threshold)
参数:

  • img:二值化推向或者进行Canny边缘检测
  • rho、theta:ρ和θ的精确度
  • threshold:阈值,只有累加器中的值高于该值时才被认为是直线
  • 示例

检测下图中的直线
Opencv-图像处理理论与实例操作(二)_第114张图片

import numpy as np
import random
import cv2 as cv

# 转换为二值图
path = 图片路径
img = cv.imread(path)

gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
edged = cv.Canny(gray,50,150) 

# 霍夫直线变换
lines = cv.HoughLines(edges,0.8,np.pi/100,150) # 返回检测到的所有直线

# 绘制图像 极坐标 -》 笛卡尔
for line in lines:
	rho,theta = line[0]
	a = np.cos(theta)
	b = np.sin(theta)
	x0 = a*rho
	y0 = b*rho
	x1 = int(x0+1000(-b))
	y1 = int(y0+1000(a))
	x2 = int(x0-1000(-b))
	y2 = int(y0-1000(a))
	cv.line(img,(x1,y1),(x2,y2),(0,255,0)) # 绿色线

Opencv-图像处理理论与实例操作(二)_第115张图片
Opencv-图像处理理论与实例操作(二)_第116张图片
Opencv-图像处理理论与实例操作(二)_第117张图片

4.2.3 霍夫线检测

注意:霍夫圆检测对噪声比较敏感,首先应该进行中值滤波

  • 检测原理
    Opencv-图像处理理论与实例操作(二)_第118张图片
  • API
    Opencv-图像处理理论与实例操作(二)_第119张图片
import cv2 as cv
import  numpy as np

path = 图片路径
img = cv.imread(path)
gry_img = cv.cvtColor(planets,cv.COLOR2GRAY)

# 中值滤波   去除噪点
img = cv.medianBlur(gay_img,7)

# 霍夫圆检测
circles = cv.HoughCircles(img,cv.HOUGH_GRADIENT,1,200,PARAM1=100,PARAM2=30,minRadius=0 ,minRadius=100 )

# 绘制结果
for i in ciecles[0,:]:
	# 绘制圆形
	cv.circle(planets,(i[0],i[1]),i[2],(0,255,0),2)
	# 绘制圆心
	cv.circle(planets,(i[0],i[1]),2,(0,255,0),3)

Opencv-图像处理理论与实例操作(二)_第120张图片
Opencv-图像处理理论与实例操作(二)_第121张图片
Opencv-图像处理理论与实例操作(二)_第122张图片

  • 本章小结
    Opencv-图像处理理论与实例操作(二)_第123张图片

总结

这篇博客是结合两个视频所记下来的,难免有些差错或者个人误解,希望大家能够指出错误,一起进步!

你可能感兴趣的:(#,opencv图像处理,python,opencv,计算机视觉,算法)