python + openCV图像处理(四)

版权声明:博客内容仅参考,如有错误,请不吝指出,在此谢过。 https://blog.csdn.net/zhaiax672/article/details/88806914

文章目录

引言

此系列博客记录 网易云课堂 python + openCV图像处理课程的学习过程。

本篇博客将介绍 阈值分割图像平滑处理 两大部分。


示例图片

xiaoxin.png

在这里插入图片描述


代码

1、阈值分割

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

import cv2

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)
r,b = cv2.threshold(a,127,255,cv2.THRESH_BINARY) # 二进制阈值化
r,b = cv2.threshold(a,127,255,cv2.THRESH_BINARY_INV) # 反二进制阈值化
r,b = cv2.threshold(a,127,255,cv2.THRESH_TRUNC) # 截断阈值化
r,b = cv2.threshold(a,127,255,cv2.THRESH_TOZERO_INV) # 反阈值化为0
r,b = cv2.threshold(a,127,255,cv2.THRESH_TOZERO) # 阈值化为0

cv2.imshow("a",a) 
cv2.imshow("b",b)

cv2.waitKey()
cv2.destroyAllWindows()

r,b = cv2.threshold(src,thresh,maxval,type)

其中,r 表示阈值,与 thresh 相等,b 是阈值化的返回结果,src 是目标图像,thresh 是阈值,maxval 是最大值,type 是类型

执行效果图:

①二进制阈值化:黑的更黑,亮的更亮
在这里插入图片描述
②反二进制阈值化:黑的变亮,亮的变黑
在这里插入图片描述
③截断阈值化:整体变暗
在这里插入图片描述
④阈值化为0:黑的更黑
在这里插入图片描述
⑤反阈值化为0:亮的变黑在这里插入图片描述


2、图像平滑处理

  • 均值滤波

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

import cv2

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)
# b = cv2.blur(a,(5,5)) # 核为 5行5列
b = cv2.blur(a,(100,100)) # 核为 100行100列

cv2.imshow("a",a) 
cv2.imshow("b",b)

cv2.waitKey()
cv2.destroyAllWindows()

blur(a,(x,y)) - a 是目标图像 ,xy 分别代表核的行列数

效果图:

①核为 5行5列
在这里插入图片描述
②核为 100行100列
在这里插入图片描述


  • 方框滤波

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

import cv2

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)
b = cv2.boxFilter(a,-1,(2,2),normalize = 1) # 进行归一化,与均值滤波相同
# b = cv2.boxFilter(a,-1,(2,2),normalize = 0) # 不进行归一化,所有值接近255

cv2.imshow("a",a) 
cv2.imshow("b",b)

cv2.waitKey()
cv2.destroyAllWindows()

boxFilter(a,d,(x,y),normalize = 1)

其中,a 是目标图像, d 是目标图像的深度 , xy 分别代表核的行列数,normalize 代表是否对目标结果进行归一化处理

效果图:

①进行归一化,与均值滤波相同
在这里插入图片描述
②不进行归一化,所有值均接近255
在这里插入图片描述


  • 高斯滤波

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

import cv2

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)
b = cv2.GaussianBlur(a,(5,5),0) # 高斯滤波

cv2.imshow("a",a) 
cv2.imshow("b",b)

cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述


  • 中值滤波

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

import cv2

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)
b = cv2.medianBlur(a,99) 

cv2.imshow("a",a) 
cv2.imshow("b",b)

cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhaiax672/article/details/88806914