ret,dst = cv2.threshold(src,thresh,maxval,type)
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("./1.jpg")
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
titles = ['Original','Image','Binary','Binary_INV','Trunc','ToZero','ToZero_INV']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5]
# 遍历
for i in range(len(images)):
plt.subplot(2, 3, i + 1)
plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
# 图像显示
plt.show()
先看下效果图,好像跟原图没什么区别
然而代码只是做了简单的均值滤波操作,代码如下:
import cv2
img = cv2.imread('./1.jpg')
# 均值滤波
# 简单的平均卷积操作
blur = cv2.blur(img,(3,3))
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img = cv2.imread('./1.jpg')
# 方原滤波
# 基本和均值一样
box = cv2.boxFilter(img,-1,(3,3),normalize=True)
cv2.imshow('box',box)
cv2.waitKey(0)
cv2.destroyAllWindows()
先看下效果图,从图中明显可以发现,左边的图比右边的要模糊那么一点点,这是使用高斯滤波来实现的
代码如下:
import cv2
img = cv2.imread('./2.jpg')
# 高斯模糊
# 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
gaussian = cv2.GaussianBlur(img, (5, 5), 1)
cv2.imshow('gaussian', gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img = cv2.imread('./2.jpg')
# 中值滤波
# 相当于用中值代替
median = cv2.medianBlur(img, 5)
cv2.imshow("median", median)
cv2.waitKey(0)
cv2.destroyAllWindows()
在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数 f 和 g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分函数值乘积对重叠长度的积分
如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是 “滑动平均” 的推广
假设 C1,1 是两个矩阵相乘后得到的新的数值,那么也就是 f 和 g 的元素下标相加都为 1,1,即:
C1,2 = a0,0b1,1 + a0,1b1,0 + a0,2b2,0 …
关于卷积神经的更多介绍请看这篇文章 如何通俗易懂地解释卷积? 这篇文章写得很好,用丰富图片文字公式的形式简单易懂地讲解了什么是卷积
代码如下:
import cv2
import numpy as np
img = cv2.imread('./2.jpg')
# 均值滤波
# 简单的平均卷积操作
blur = cv2.blur(img, (3, 3))
# 高斯模糊
# 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
gaussian = cv2.GaussianBlur(img, (5, 5), 1)
# 中值滤波
# 相当于用中值代替
median = cv2.medianBlur(img, 5)
# 将三幅图横向连在一起
res = np.hstack((blur, gaussian, median))
# 显示图像
cv2.imshow("median vs average", res)
cv2.waitKey(0)
cv2.destroyAllWindows()