1.高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)-> dst
#(5, 5)表示高斯矩阵的长与宽都是5,标准差取0
——src输入图像。
——dst输出图像的大小和类型与src相同。
——ksize高斯内核大小。 ksize.width和ksize.height可以不同,但它们都必须为正数和奇数,也可以为零,然后根据sigmaX和sigmaY计算得出。
——sigmaX X方向上的高斯核标准偏差。
——sigmaY Y方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX;如果两个sigmas为零,则分别从ksize.width和ksize.height计算得出;为了完全控制结果,而不管将来可能对所有这些语义进行的修改,建议指定所有ksize,sigmaX和sigmaY。
原文链接:https://blog.csdn.net/weixin_52012241/article/details/122284713#
import numpy as np
import cv2
img = cv2.imread('./12.jpg')
img = cv2.resize(img, None, fx=0.5, fy=0.5,
interpolation=cv2.INTER_CUBIC)#调整图片大小
cv2.imshow('Original', img)
blur_image = cv2.GaussianBlur(img, (5, 5), 0)#(5, 5)表示高斯矩阵的长与宽都是5,标准差取0
cv2.imshow('Blurred Image', blur_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.#adaptiveThreshold虽然人物的信息丢失了很多,但是背景基本上被去掉了
binary = cv2.adaptiveThreshold(gray, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 15, -10) #二值化
3.轮廓检测contours, hierarchy = cv2.findContours(image,mode,method)
轮廓检测也是图像处理中经常用到的。OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。
image:输入图像
mode:轮廓的模式。cv2.RETR_EXTERNAL只检测外轮廓;cv2.RETR_LIST检测的轮廓不建立等级关系;cv2.RETR_CCOMP建立两个等级的轮廓,上一层为外边界,内层为内孔的边界。如果内孔内还有连通物体,则这个物体的边界也在顶层;cv2.RETR_TREE建立一个等级树结构的轮廓。
method:轮廓的近似方法。cv2.CHAIN_APPROX_NOME存储所有的轮廓点,相邻的两个点的像素位置差不超过1;cv2.CHAIN_APPROX_SIMPLE压缩水平方向、垂直方向、对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需要4个点来保存轮廓信息;cv2.CHAIN_APPROX_TC89_L1,cv2.CV_CHAIN_APPROX_TC89_KCOS
contours:返回的轮廓
hierarchy:每条轮廓对应的属性
注意:cv2.findContours()函数接受的参数为二值图,即黑白的(不是灰度图),所以读取的图像要先转成灰度的,再转成二值图。
4. cv2.polylines()用来画多边形。
- 第1个参数为图像对象;
- 第2个参数为包含一个三元组元素的列表,包含了多边形的各个顶点;
- 第3个参数为Bool型参数表示是否闭合;
- 第4个参数为颜色;
-
第5个参数为线条宽度,注意不能使用-1表示填充;
cv2.polylines(img, [box], True, (0, 255, 0), 1) # pic