Day02计算机视觉OpenCv

一、图像平滑

1.均值滤波

#均值滤波:cv2.blur(原始图像名,核的大小)核大小用元组表示(weight,height)
#任何一点的新的像素值都是周围N*N个像素点的值的均值
#针对原始图像内的像素点,逐个采用核(weight*height)进行处理,得到滤波结果图像
#核内每一个像素点所占的比例都相同
#均值滤波得到的图像更加平滑

import cv2
import numpy as np
img=cv2.imread("/Users/macbook/Desktop/face.png")
cv2.imshow("original",img)

img1=cv2.blur(img,(10,10))#使用五行五列的核进行均值滤波
cv2.imshow("blur",img1)

cv2.waitKey(0)
cv2.destroyAllWindows()

2.方框滤波

#方框滤波:cv2.boxFilter(原始图像,目标图像深度,核大小,normalize属性)
#目标图像深度一般设为-1,表示与原始图像的目标深度统一
#normalize属性:如果为true,就是均值滤波,
# 如果为false,点的像素值为周围核的所有像素点的值的和,很容易发生溢出,一旦饱和就是255(1)

import cv2
import numpy as np
img=cv2.imread("/Users/macbook/Desktop/face.png")
cv2.imshow("original",img)

#normalize属性为true,相当于均值滤波,1可以省略不写
img1=cv2.boxFilter(img,-1,(5,5),1)
cv2.imshow("boxFilter1",img1)

#normalize属性为false,很可能得到纯白色图像
img2=cv2.boxFilter(img,-1,(10,10),0)
cv2.imshow("boxFilter2",img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

3.高斯滤波

#高斯滤波:cv2.GaussianBlur(原始图像,核大小,sigmaX)
#核的大小必须是奇数。sigmaX是x方向方差,控制权重,一般情况下为0就行
#对周围像素计算加权平均值,临近的像素值具有更高的权重值,自身的权重最大

import cv2
import numpy as p
img=cv2.imread("/Users/macbook/Desktop/beauty.png")
cv2.imshow("original",img)
img1=cv2.GaussianBlur(img,(5,5),0)#高斯滤波
cv2.imshow("GaussianBlur",img1)

cv2.waitKey(0)
cv2.destroyAllWindows()

4.中值滤波

#中值滤波:cv2.medianBlur(原始图像,核的大小)
#核的大小必须是奇数,形式就是int,不是元组
#让周围核中的像素值按照大小排列,取排序像素集中位于中间位置的值作为中值滤波后的像素值
#中值滤波的效果比较好

import cv2
img=cv2.imread("/Users/macbook/Desktop/beauty.png")
cv2.imshow("original",img)

img1=cv2.medianBlur(img,5)
cv2.imshow("medianBlur",img1)

cv2.waitKey(0)
cv2.destroyAllWindows()

二、形态学转换

1.图像腐蚀和图像膨胀

腐蚀和膨胀迭代次数越多,图像效果越明显。

#图像腐蚀:cv2.erode(原始图像,卷积核,迭代次数)
#卷积核:np.ones((weight,height),np.uint8) 白色的、里面的像素值都是1
#迭代次数:进行几次腐蚀,默认情况下为1次腐蚀
#形态学转换主要针对的是二值图像(黑白),腐蚀的一般是白色
#卷积核:腐蚀过程中使用的数组。卷积核的中心点逐个像素点进行移动遍历
# 只有当卷积核中所有像素点对应的元素值均为1时,其值才为1(白),否则值为0(黑),实现了腐蚀


#图像膨胀:cv2.dilate(原始图像,卷积核,迭代次数)
#卷积核:kernel=n

你可能感兴趣的:(opencv,人工智能,计算机视觉)