当前位置: 首页 > 编程笔记 >

opencv+python实现均值滤波

罗业
2023-03-14
本文向大家介绍opencv+python实现均值滤波,包括了opencv+python实现均值滤波的使用技巧和注意事项,需要的朋友参考一下

本文实例为大家分享了opencv+python实现均值滤波的具体代码,供大家参考,具体内容如下

原理

均值滤波其实就是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法,当滤波核的大小是3×3 3\times 33×3时,则取其自身和周围8个像素值的均值来代替当前像素值。
均值滤波也可以看成滤波核的值均为 1 的滤波。
优点:算法简单,计算速度快;
缺点:降低噪声的同时使图像产生模糊,特别是景物的边缘和细节部分。

代码

import cv2 as cv
import numpy as np
import math
import copy

def spilt( a ):
 if a/2 == 0:
  x1 = x2 = a/2
 else:
  x1 = math.floor( a/2 )
  x2 = a - x1
 return -x1,x2

def original (i, j, k,a, b,img):
 x1, x2 = spilt(a)
 y1, y2 = spilt(b)
 temp = np.zeros(a * b)
 count = 0
 for m in range(x1, x2):
  for n in range(y1, y2):
   if i + m < 0 or i + m > img.shape[0] - 1 or j + n < 0 or j + n > img.shape[1] - 1:
    temp[count] = img[i, j, k]
   else:
    temp[count] = img[i + m, j + n, k]
   count += 1
 return temp

def average_function(a , b ,img):
 img0 = copy.copy(img)
 for i in range (0 , img.shape[0] ):
  for j in range (2 ,img.shape[1] ):
   for k in range (img.shape[2]):
    temp = original(i, j, k, a, b, img0)
    img[i,j,k] = int ( np.mean(temp))
 return img 
 
def main():
 img0 = cv.imread(r"noise.jpg")

 ave_img = average_function( 3 , 3, copy.copy(img0) ) #(3,3)滤波器大小 

 cv.imshow("ave_img",ave_img) 
 cv.imshow("original",img0)

 cv.waitKey(0)
 cv.destroyAllWindows()

if __name__ == "__main__":
 main()

样例

原图:

滤波核为3×3 3\times 33×3的均值滤波后:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍理想高通滤波实现Python opencv示例,包括了理想高通滤波实现Python opencv示例的使用技巧和注意事项,需要的朋友参考一下 理想高通滤波实现 python opencv 效果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链接

  • OpenCV中的K-Means聚类 作者|OpenCV-Python Tutorials 编译|Vincent 来源|OpenCV-Python Tutorials 目标 了解如何在OpenCV中使用cv.kmeans()函数进行数据聚类 理解参数 输入参数 sample:它应该是np.float32数据类型,并且每个功能都应该放在单个列中。 nclusters(K):结束条件所需的簇数 crit

  • 本文向大家介绍Python实现计算图像RGB均值方式,包括了Python实现计算图像RGB均值方式的使用技巧和注意事项,需要的朋友参考一下 要求 存在一个文件夹内有若干张图像,需要计算每张图片的RGB均值,并计算全部图像的RGB均值。 代码 这里需要注意cv2.imread()读取顺序为BGR问题。 注意 路径不能出现中文,不然容易出错。 错误如下: TypeError: 'NoneType' o

  • 问题内容: 是否有任何辅助方法来绘制由cv2.minAreaRect()返回的旋转矩形,大概是?cv2.rectangle()不支持角度。而且由于返回的元组不是“ RotatedRect”类的(因为它似乎没有在Python绑定中实现),所以没有方法,如C ++教程“为轮廓创建边界旋转框和椭圆形¶”所示。 如何从线中绘制旋转的矩形-绕中心点或给定的第一个点旋转? 问题答案: 应该可以。 资料来源:

  • 本文向大家介绍Python OpenCV实现鼠标画框效果,包括了Python OpenCV实现鼠标画框效果的使用技巧和注意事项,需要的朋友参考一下 使用Python+OpenCV实现鼠标画框的代码,供大家参考,具体内容如下 其中image_processing.py文件如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python+opencv实现动态物体识别,包括了python+opencv实现动态物体识别的使用技巧和注意事项,需要的朋友参考一下 注意:这种方法十分受光线变化影响 自己在家拿着手机瞎晃的成果图: 源代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。