1.灰度图和HSV
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#cv2.cvtColor()函数
2.图像阈值
图像阈值
ret, dst = cv2.threshold(src, thresh, maxval, type)
-
src: 输入图,只能输入单通道图像,通常来说为灰度图 -
dst: 输出图 -
thresh: 阈值 -
maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值 -
type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV -
cv2.THRESH_BINARY(二值): 超过阈值部分取maxval(最大值),否则取0 -
cv2.THRESH_BINARY_INV: THRESH_BINARY的反转 -
cv2.THRESH_TRUNC :大于阈值部分设为阈值,否则不变 -
cv2.THRESH_TOZERO :大于阈值部分不改变,否则设为0 -
cv2.THRESH_TOZERO_INV:THRESH_TOZERO的反转
3.图像平滑
img = cv2.imread('lenaNoise.png')
# 均值滤波,简单的平均卷积操作
blur = cv2.blur(img, (3, 3))#每3*3矩阵求均值
# 方框滤波,基本和均值一样,可以选择归一化
box = cv2.boxFilter(img,-1,(3,3), normalize=True)
# 方框滤波,基本和均值一样,可以选择归一化,容易越界
box = cv2.boxFilter(img,-1,(3,3), normalize=False)
# 高斯滤波,高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的
aussian = cv2.GaussianBlur(img, (5, 5), 1)
# 中值滤波,相当于用中值代替
median = cv2.medianBlur(img, 5)
#展示所有的图像处理结果
res = np.hstack((blur,aussian,median))
4.腐蚀操作
img = cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
erosion_image = cv2.erode(img,kernel,iterations = 1)
#腐蚀核越大、迭代次数越多腐蚀效果越明显
5.膨胀操作
kernel = np.ones((3,3),np.uint8)
dige_img = cv2.dilate(img,kernel,iterations = 1)
#膨胀核越大、迭代次数越多腐蚀效果越明显
?
?
|