# 图像的类型
type(image)
# 图像的大小,元组(行,列,通道)
image.shape
# 图像的大小,值为shape三个元素的乘积
image.size
# 图像像素的数据类型
image.dtype
图像缩放:
# 缩放为指定尺寸
img1 = cv2.resize(img1, (1000, 750))
图像颜色转换:
# 彩色图转灰度图
img = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
图像通道分离和合并:
# 注意通道的顺序是b, g, r
# 图像通道分离
b,g,r = cv2.split(img)
b = cv2.split(img)[0]
g = cv2.split(img)[1]
r = cv2.split(img)[2]
# 图像通道合并
img = cv2.merge([b,g,r])
均值滤波(Averaging):
# 函数原型
blur(src, ksize[, dst[, anchor[, borderType]]] )
# 实例
blur = cv2.blur(img, (3,3))
高斯滤波(Gaussian Blurring):
# 函数原型
GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])
# 实例
blur = cv2.GaussianBlur(img,(5,5),0)
中值滤波(Median Blurring):
# 函数原型
medianBlur(src, ksize[, dst])
# 实例
median = cv2.medianBlur(img,5)
双边滤波(Bilateral Filtering):
# 函数原型
bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])
# 实例
blur = cv2.bilateralFilter(img,9,75,75)
函数原型:
# 普通阈值
threshold(src, thresh, maxval, type, dst=None)
# 自适应阈值,图片分成小块计算阈值
adaptiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C,dst=None)
# 灰度值超过 100 的变为 255,小于的为 0
ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
# 最佳阈值二值化
ret, thresh1 = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# 自适应阈值,返回值没有ret
thresh1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 5)
Sobel 算子:
函数原型:
Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None)
# Sobel算子求水平和垂直梯度
x = cv2.Sobel(img, cv2.CV_16S, 1, 0)
y = cv2.Sobel(img, cv2.CV_16S, 0, 1)
# 求梯度的绝对值
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
# 水平和垂直梯度的加权和
dst = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
Canny边缘检测原理
# 函数原型
Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]])
Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]])
# 实例
edges = cv2.Canny(img,100,200)