网站备案问题,家在深圳龙光城,no7wordpress,建设论坛网站需要多少钱文章目录 《OpenCV计算机视觉》-对图片的各种操作#xff08;均值、方框、高斯、中值滤波处理#xff09;边界填充阈值处理图像平滑处理生成椒盐图片均值滤波处理方框滤波处理高斯滤波处理中值滤波处理 图像形态学腐蚀膨胀开运算闭运算顶帽和黑帽 《OpenCV计算机视觉》-对图片… 文章目录 《OpenCV计算机视觉》-对图片的各种操作均值、方框、高斯、中值滤波处理边界填充阈值处理图像平滑处理生成椒盐图片均值滤波处理方框滤波处理高斯滤波处理中值滤波处理 图像形态学腐蚀膨胀开运算闭运算顶帽和黑帽   《OpenCV计算机视觉》-对图片的各种操作均值、方框、高斯、中值滤波处理 
边界填充 
cv2.copyMakeBorder()是OpenCV库中的一个函数用于给图像添加额外的边界(padding)。
copyMakeBorder(src: UMat, top: int, bottom: int, left: int, right: int, borderType: int, dst: UMat | None  ..., value: cv2.typing.Scalar  ...)
它有以下几个参数
src:要扩充边界的原始图像。
top, bottom, left, right:相应方向上的边框宽度。
borderType:定义要添加边框的类型它可以是以下的一种
cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)。
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射类似于gfedcba|abcdefgh|hgfedcba。 (交界处也复制了
cv2.BORDER_REFLECT_101 或 cv2.BORDER_DEFAULT和上面类似但是有一些细微的不同类似于gfedcb|abcdefgh|gfedcba  (交接处删除了
cv2.BORDER_REPLICATE使用最边界的像素值代替类似于aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP上下左右边依次替换cdefgh|abcdefgh|abcdefgys  cv2.imread(demo1.png)
top,bottom,left,right  50,50,50,50
constant  cv2.copyMakeBorder(ys,top,bottom,left,right,borderTypecv2.BORDER_CONSTANT,value(100,20,220))
reflect  cv2.copyMakeBorder(ys,top,bottom,left,right,borderTypecv2.BORDER_REFLECT)
reflect101  cv2.copyMakeBorder(ys,top,bottom,left,right,borderTypecv2.BORDER_REFLECT101)
replicate  cv2.copyMakeBorder(ys,top,bottom,left,right,borderTypecv2.BORDER_REPLICATE)
wrap  cv2.copyMakeBorder(ys,top,bottom,left,right,borderTypecv2.BORDER_WRAP)cv2.imshow(yuantu,ys)
cv2.waitKey(0)
cv2.imshow(CONSTANT,constant)
cv2.waitKey(0)
cv2.imshow(REFLECT,reflect)
cv2.waitKey(0)
cv2.imshow(REFLECT101,reflect101)
cv2.waitKey(0)
cv2.imshow(REPLICATE,replicate)
cv2.waitKey(0)
cv2.imshow(WRAP,wrap)
cv2.waitKey(0)阈值处理 
阈值处理是指剔除图像内像素值高于一定值或低于一定值的像素点。使用的方法为:
retval,dstcv2.threshold(src,thresh,maxval,type)retval代表返回的阈值dst代表阈值分割结果图像与原始图像具有相同的大小和类型src代表要进行阈值分割的图像可以是多通道的8位或32位浮点型数值thresh代表要设定的阈值maxval代表type参数位THRESH_BINARY或者THRESH_BINARY_INV类型时需要设定的最大值type代表阈值分割的类型具体内容如下表所示:选项                  像素值thresh      其他情况
cv2.THRESH_BINARY         maxval              0
cv2.THRESH_BINARY_INV         0               maxval
cv2.THRESH_TRUNC          thresh              当前灰度值
cv2.THRESH_TOZERO         当前灰度值           0
cv2.THRESH_TOZERO_INV         0               当前灰度值image  cv2.imread(demo1.png,0)
ret,binarycv2.threshold(image,210,255,cv2.THRESH_BINARY)
ret1,binaryinvcv2.threshold(image,210,255,cv2.THRESH_BINARY_INV)
ret2,trunccv2.threshold(image,210,255,cv2.THRESH_TRUNC)
ret3,tozerocv2.threshold(image,210,255,cv2.THRESH_TOZERO)
ret4,tozeroinvcv2.threshold(image,210,255,cv2.THRESH_TOZERO_INV)cv2.imshow(gray,image)
cv2.waitKey(0)
cv2.imshow(binary,binary)
cv2.waitKey(0)
cv2.imshow(binaryinv,binaryinv)
cv2.waitKey(0)
cv2.imshow(trunc,trunc)
cv2.waitKey(0)
cv2.imshow(tozero,tozero)
cv2.waitKey(0)
cv2.imshow(tozeroinv,tozeroinv)
cv2.waitKey(0)
cv2.destroyAllWindows()图像平滑处理 
图像平滑smoothing也称为“模糊处理”bluring 是一项简单且使用频率很高的图像处理方法。
可以用来压制、弱化或消除图像中的细节、突变、边缘和噪声。但最常见的是用来减少图像上的噪声或者失真。
降低图像分辨率时平滑处理是很重要的。
下面是常用的一些滤波器均值滤波邻域平均滤波– blur函数方框滤波– boxFilter函数高斯滤波–GaussianBlur函数中值滤波–medianBlur函数dstcv2.blur(src,ksize,anchor,borderType)dst是返回值src是需要处理的图像kszie是滤波核(卷积核)的大小anchor是锚点默认值是-1-1一般无需更改borderType是边界样式一般无需更改
一般情况下使用dstcv2.blur(src,ksize)即可生成椒盐图片 
def add_peppersalt_noise(image,n10000):result  image.copy()h, wimage.shape[:2] # 获取图片的高和宽for i in range(n):  # 生成n个椒盐噪声x  np.random.randint(1,h)y  np.random.randint(1,w)if np.random.randint(0,2)  0:result[x, y]  0else:result[x,y] 255return resultimage  cv2.imread(demo1.png)
cv2.imshow(sro,image)
cv2.waitKey(0)
noise  add_peppersalt_noise(image)
cv2.imshow(noise,noise)
cv2.waitKey(0)均值滤波处理 
blur_1  cv2.blur(noise,(3,3))
cv2.imshow(blur_1,blur_1)
cv2.waitKey(0)blur_2  cv2.blur(noise,(5,5))
cv2.imshow(blur_2,blur_2)
cv2.waitKey(0)方框滤波处理 
dstcv2.boxFiltersrc,ddepth,ksize,anchor,normalize,borderType式中● dst是返回值表示进行方框滤波后得到的处理结果。● src 是需要处理的图像即原始图像。● ddepth是处理结果图像的图像深度一般使用-1表示与原始图像使用相同的图像深度。可以理解为数据类型● ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高 度和宽度。● anchor 是锚点指对应哪个区域● normalize 表示在滤波时是否进行归一化。1.当值为True时归一化用邻域像素值的和除以面积。  此时方框滤波与 均值滤波 效果相同。2.当值为False时不归一化直接使用邻域像素值的和。和255时使用255
# 方框滤波boxFilter_1  cv2.boxFilter(noise,-1,(3,3),normalizeTrue)
cv2.imshow(boxFilter_1,boxFilter_1)
cv2.waitKey(0)
boxFilter_2  cv2.boxFilter(noise,-1,(3,3),normalizeFalse)
cv2.imshow(boxFilter_2,boxFilter_2)
cv2.waitKey(0)高斯滤波处理 
cv2.GaussianBlur(src, ksize[, sigmaX[, sigmaY[, dst]]])高斯滤波
参数说明
src:输入图像通常是一个NumPy数组。
ksize:滤波器的大小它是一个元组表示在水平和垂直方向上的像素数量。例如(5, 5)表示一个5x5的滤波器。
sigmaX和sigmaY:分别表示在X轴和Y轴方向上的标准差。这些值与滤波器大小相同。默认情况下它们都等于0,这意味着没有高斯模糊。
dst:输出图像通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。GaussianB  cv2.GaussianBlur(noise,(3,3),1)
cv2.imshow(GaussianBlur,GaussianB)
cv2.waitKey(0)中值滤波处理 
cv2.medianBlur(src, ksize[, dst])中值滤波参数说明
src:输入图像。
ksize:滤波器的大小它是一个整数表示在水平和垂直方向上的像素数量。例如5表示一个5x5的滤波器。
dst:输出图像通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。medianB  cv2.medianBlur(noise,3)
cv2.imshow(medianBlur,medianB)
cv2.waitKey(0)
cv2.destroyAllWindows()图像形态学 
腐蚀 
1、图像腐蚀, 函数为
cv2.erode(src, kernel, dst,anchor,iterations,borderType,borderValue)
src: 输入的图像
kernel: 用于腐蚀的结构元件如果element  Mat()则使用3 × 3的矩形结构单元。
dst: 它是与src相同大小和类型的输出图像。
iterations:腐蚀操作的迭代次数默认为1。次数越多, 腐蚀操作执行的次数越多,腐蚀效果越明显sun  cv2.imread(sun.png)
cv2.imshow(sun,sun)
cv2.waitKey(0)
kernel  np.ones((3,3),np.uint8)
erosion_1  cv2.erode(sun,kernel,iterations2)
cv2.imshow(erosion_1,erosion_1)
cv2.waitKey(0)膨胀 
2、图像膨胀,   函数为
cv2.dilate(img, kernel, iteration)
参数含义
img – 目标图片
kernel – 进行操作的内核默认为3×3的矩阵
iterations – 膨胀次数默认为1wenzi  cv2.imread(zimu.png)
cv2.imshow(src1,wenzi)
cv2.waitKey(0)
kernel  np.ones((2,2),np.uint8)
wenzi_new  cv2.dilate(wenzi,kernel,iterations3)
cv2.imshow(wenzi_new,wenzi_new)
cv2.waitKey(0)开运算 
开运算先腐蚀后膨胀。zhiwen  cv2.imread(zhiwen1.png)
cv2.imshow(scr2,zhiwen)
cv2.waitKey(0)
kernel  np.ones((2,2),np.uint8)
zhiwen_new  cv2.morphologyEx(zhiwen,cv2.MORPH_OPEN,kernel)
cv2.imshow(zhiwen_new,zhiwen_new)
cv2.waitKey(0)闭运算 
闭运算先膨胀后腐蚀zhiwen  cv2.imread(zhiwen2.png)
cv2.imshow(scr3,zhiwen)
cv2.waitKey(0)
kernel  np.ones((4,4),np.uint8)
zhiwen_new  cv2.morphologyEx(zhiwen,cv2.MORPH_CLOSE,kernel)
cv2.imshow(zhiwen_new,zhiwen_new)
cv2.waitKey(0)cv2.destroyAllWindows()顶帽和黑帽 
顶帽  原始图像 - 开运算结果(先腐蚀后膨胀)
黑帽  闭运算(先膨胀后腐蚀) - 原始图像sun  cv2.imread(sun.png)
cv2.imshow(sun_yuantu,sun)
cv2.waitKey(0)
kernel  np.ones((2,2),np.uint8)  #设置kenenel大小
#开运算
open_suncv2.morphologyEx(sun,cv2.MORPH_OPEN,kernel)
cv2.imshow(open_sun,open_sun)
cv2.waitKey(0)
#顶帽
tophat  cv2.morphologyEx(sun,cv2.MORPH_TOPHAT,kernel)
cv2.imshow(TOPHAT,tophat)
cv2.waitKey(0)
#闭运算
close_suncv2.morphologyEx(sun,cv2.MORPH_CLOSE,kernel)
cv2.imshow(close_sun,close_sun)
cv2.waitKey(0)
#黑帽
blackhat  cv2.morphologyEx(sun,cv2.MORPH_BLACKHAT,kernel)
cv2.imshow(BLACKHAT,blackhat)
cv2.waitKey(0)