博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python opencv图像模糊
阅读量:3901 次
发布时间:2019-05-23

本文共 2283 字,大约阅读时间需要 7 分钟。

运动模糊

import cv2import numpy as npfrom matplotlib import pyplot as pltdef motion_blur(image, degree=50, angle=45):    image = np.array(image)    # 这里生成任意角度的运动模糊kernel的矩阵, degree越大,模糊程度越高    M = cv2.getRotationMatrix2D((degree / 2, degree / 2), angle, 1)    motion_blur_kernel = np.diag(np.ones(degree))    motion_blur_kernel = cv2.warpAffine(motion_blur_kernel, M, (degree, degree))    motion_blur_kernel = motion_blur_kernel / degree    #使用2D卷积    blurred = cv2.filter2D(image, -1, motion_blur_kernel)    # convert to uint8    cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)    blurred = np.array(blurred, dtype=np.uint8)    return blurredimg = cv2.imread('Lighthouse.jpg')res = motion_blur(img)plt.subplot(121),plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(res),plt.title('moving'),plt.xticks([]),plt.yticks([])plt.show()

在这里插入图片描述

平均模糊
这是通过将图像与归一化框滤镜进行卷积来完成的。它仅获取内核区域下所有像素的平均值,并
替换中心元素。

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('logo.jpg')blur = cv2.blur(img,(5,5))plt.subplot(121),plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(blur),plt.title('blured'),plt.xticks([]),plt.yticks([])plt.show()

在这里插入图片描述

高斯模糊

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('logo.jpg')blur = cv2.GaussianBlur(img,(5,5),0)plt.subplot(121),plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(blur),plt.title('gaussian_blured'),plt.xticks([]),plt.yticks([])plt.show()

在这里插入图片描述

中位模糊
向原始图像添加了90%的噪声并应用了中值模糊。

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('logo.jpg')blur = cv2.medianBlur(img,9)plt.subplot(121),plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(blur),plt.title('gaussian_blured'),plt.xticks([]),plt.yticks([])plt.show()

在这里插入图片描述

双边滤波
去除噪声的同时保持边缘清晰锐利非常有效

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('Lighthouse.jpg')blur = cv2.bilateralFilter(img,12,75,75)#参数介绍,图像,领域直径,颜色空间的标准方差,坐标空间的标准方差plt.subplot(121),plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(blur),plt.title('bilateralFilter'),plt.xticks([]),plt.yticks([])plt.show()

效果不明显,图片不合适

在这里插入图片描述

转载地址:http://uhben.baihongyu.com/

你可能感兴趣的文章
5年工作经验的我放弃安逸,一份来自腾讯魔鬼面试的终极考验!
查看>>
学JAVA吗同学,这篇Sping boot 确定不了解下么?
查看>>
(3年+offer)华为技术岗面试初面+综合面试经验总结
查看>>
男默女泪,努力复习的我终于通过社招进入BAT工作了!(JAVA+JVM+框架+中间件+Spring干货分享)
查看>>
Python 导包
查看>>
dok_matrix
查看>>
theano 后端爆内存
查看>>
os.environ 和 keras.json
查看>>
后台面试经典问题-手写LRU算法
查看>>
Part-Guided Attention Learning for Vehicle Instance Retrieval
查看>>
Deep Residual Learning for Image Recognition
查看>>
Bag of Tricks and A Strong Baseline for Deep Person Re-identification
查看>>
vue+flask实现视频目标检测yolov5
查看>>
关于BigInteger
查看>>
UIScrollView不能响应UITouch事件
查看>>
iOS TextFiled 文本密码切换 光标偏移解决
查看>>
iOS 当前应用所占内存和设备可用内存
查看>>
iOS 文件属性
查看>>
UIView的layoutSubviews和drawRect方法何时调用
查看>>
iOS GCD多线程下载原理
查看>>