环境版本:
Python 版本:
Anaconda Python 3.7
opencv包版本:
opencv-contrib-python 3.4.2.16
opencv-python 3.4.2.16
运行环境:jupyter
初始化:
import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline # 此语句为jupyter语法糖 可以直接在console输出显示图像,仅支持jupyter
img = cv2.imread('./yy.jpg')
img # 后面都使用此图像 可以直接通过变量名看到 BGR 数据值
# ps: opencv中默认使用BGR方式排序,每个值都是0-255之间的数值

# 显示一下我们的图像信息
plt.imshow(img)
img.size
img.dtype

图像阈值:
- 输出三张图像 :
- 第一张是默认图像
- 第二张为二值化操作后的图像,THRESH_BINARY表示阈值的二值化操作,大于阈值使用maxval表示,小于阈值使用0表示,此处为:大于127为255,小于127为0
- 第三张为行化零操作,THRESH_TOZERO_INV表示进行化零操作的翻转,大于阈值的使用0表示,小于阈值的不变,此处为:大于127为0,小于127不变
ret, dst1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret, dst2 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
images = [img, dst1, dst2]
for i in range(3):
plt.subplot(2,3,i+1), plt.imshow(images[i], 'gray')
plt.xticks([]), plt.yticks([])
plt.show()

图像平滑:
# 均值滤波 周围相加/3*3 (类似归一化)
blur = cv2.blur(img, (3,3))
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 方框滤波
box = cv2.boxFilter(img, -1, (2,2), normalize=False)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 高斯滤波 周围相加(相加有个权重的相乘)/3*3 (类似归一化)
img1 = cv2.imread('./2.png')
gaussian = cv2.GaussianBlur(img,(3,3), 1)
cv2.imshow('gaussian', gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

# np.hstack 合并图像
res = np.hstack((blur,box, gaussian))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()


25万+

被折叠的 条评论
为什么被折叠?



