零基础学习opencv 模糊操作

在看模糊操作之前,个人建议先去看看CNN卷积原理,这样才能比较好的理解模糊操作,光会用,不懂原理是要不得的。

模糊操作分为三个方面的操作

第一:均值模糊,能对水平方向和竖直方向进行模糊,或者对水平和竖直方向都进行模糊操作,可以进行去噪声的操作。

代码如下:

def blur_demo(image):

dst = cv.blur(image, (15, 1)) (15,1)可以看做是 x,y 轴 水平和垂直轴

cv.imshow("bule_demo", dst)

第二:中值模糊,中值模糊也能够去处噪声,可以去除椒盐噪声(像椒盐一样的噪声,一个一个小黑点),去除效果比均值模糊要好。

代码如下:

def median_demo(image):

dst = cv.medianBlur(image,5)  没有水平 垂直 值的大小代表了模糊程度的大小

cv.imshow("median_demo", dst)

第三:自定义模糊,自定义模糊要更加的灵活,可以灵活的处理不同大小图像的模糊,上面两个比较死板。

代码如下:

def custom_blur_demo(image):

kernel = np.ones([5 ,5], np.float32)/25  为什么要除以25 因为ones 里面的卷积核是 5*5的

dst = cv.filter2D(image, -1, kernel =kernel) kernel 就是卷积核

cv.imshow("custom_blur_demo", dst)

上面的代码是均值模糊的自定义代码,作用和第一个代码一样,所以能调 api的时候没必要自己写一个。

锐化 代码如下:

def custom_blur_demo(image):

kernel = np.array([[0, -1, 0],[-1, 5, -1 ], [0 ,-1,0]],np.float32)  当 array里面的值不全为1时,后面就没有必要除一个卷积核的大小了,这时的这个卷积核 为3 *3,一般来说卷积核都是奇数,不为偶数,卷积核为偶数时,图像处理可能会出现问题。 卷积核中的数总和最好为1 or 0,总和为0,做边缘梯度,总和为1做一个增强的操作。

dst = cv.filter2D(image, -1, kernel =kernel)

cv.imshow("custom_blur_demo", dst)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Tags: DIP [TOC] Opencv Data Types basic data types 从c++集成...
    ItchyHiker阅读 1,225评论 0 1
  • 1. 2D卷积cv.filter2D() 对于一维信号,还可以使用各种低通滤波器( LPF )、高通滤波器( HP...
    Zoe_C阅读 1,483评论 0 3
  • 开心点,科三没有通过已经是昨天的事了[捂脸] 既然出发,那就嗨嗨皮皮的,祖国之南我来了[耶]
    不扎胎的康卓阅读 222评论 0 0
  • 前段时间,我处于失业状态中,一次又一次的投递简历,但毫无音讯。 我深深陷入自我怀疑。 觉得自己无比差劲,没有公司肯...
    千寻心阅读 604评论 0 3
  • 风蹿云走暗四方,石过溪流响叮当 电光四射咤惊雷,久旱一雨解心凉
    蓝色汪星人阅读 191评论 0 3