Python3+OpenCV3+Pycharm编程:图像模糊操作

模糊操作:基于离散卷积,定义好每个卷积核,不同卷积核得到不同的卷积效果,模糊是卷积的一种表现形式。

均值模糊

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。由于图像边框上的像素无法被模板覆盖,造成了图像边缘的缺失。

def blur_demo(image):
    """
    均值模糊:去随机噪声
    blur只能定义卷积核大小
    """
    dst_y = cv.blur(image, (1, 10))  # Y方向模糊,1X10卷积核
    dst_x = cv.blur(image, (10, 1))  # X方向模糊,10X1卷积核
    dst_xy = cv.blur(image, (5, 5))  # 块模糊,5X5卷积核
    cv.imshow("blurY demo", dst_y)
    cv.imshow("blurX demo", dst_x)
    cv.imshow("blurXY demo", dst_xy)

 中值模糊

将数据从小到大排序后的中间值,用3×3大小模板进行中值滤波。对模板中的9个数进行从小到大排序:1,1,1,2,2,5,6,6,10。中间值为2所有,中值滤波后(2,2)位置的值变为2.同理对其他像素点。

def median_blur_demo(image):
    """中值模糊:去噪"""
    dst_xy = cv.medianBlur(image, 5)
    cv.imshow("median_blurXY demo", dst_xy)

椒盐噪声:

自定义模糊

(锐化)就是突出图像细节或者增强图像被模糊的地方。

def custom_blur_demo(image):
    """自定义模糊"""
    kernel1 = np.ones([5, 5], np.float32)/25  # 5X5 值1卷积核,/25防止溢出
    # 卷积锐化算子,增加对比度
    kernel2 = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)  # 5X5卷积核
    dst1 = cv.filter2D(image, -1, kernel1)
    dst2 = cv.filter2D(image, -1, kernel2)
    cv.imshow("custom_blur demo1", dst1)
    cv.imshow("custom_blur demo2", dst2)

去噪

锐化

 

代码 

# -*- coding: utf-8 -*-
# By:iloveluoluo
# 2019.3.24
import cv2 as cv
import numpy as np

# 模糊操作:基于离散卷积,定义好每个卷积核,不同卷积核得到不同的卷积效果,模糊是卷积的一种表现形式。

# 均值模糊:均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该
# 模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),
# 再用模板中的全体像素的平均值来代替原来像素值。由于图像边框上的像素无法被模板覆盖,造成了图像边缘的缺失。

# 中值模糊:将数据从小到大排序后的中间值,用3×3大小模板进行中值滤波。对模板中的9个数进行从小到大排序:1,1,1,2,2,5,6,6,10。
# 中间值为2所有,中值滤波后(2,2)位置的值变为2.同理对其他像素点。

# 自定义模糊:(锐化)就是突出图像细节或者增强图像被模糊的地方。


def blur_demo(image):
    """
    均值模糊:去随机噪声
    blur只能定义卷积核大小
    """
    dst_y = cv.blur(image, (1, 10))  # Y方向模糊,1X10卷积核
    dst_x = cv.blur(image, (10, 1))  # X方向模糊,10X1卷积核
    dst_xy = cv.blur(image, (5, 5))  # 块模糊,5X5卷积核
    cv.imshow("blurY demo", dst_y)
    cv.imshow("blurX demo", dst_x)
    cv.imshow("blurXY demo", dst_xy)


def median_blur_demo(image):
    """中值模糊:去噪"""
    dst_xy = cv.medianBlur(image, 5)  # 邻域X*X,X必须为基数
    cv.imshow("median_blurXY demo", dst_xy)


def custom_blur_demo(image):
    """自定义模糊"""
    kernel1 = np.ones([5, 5], np.float32)/25  # 5X5 值1卷积核,/25防止溢出
    # 卷积锐化算子,增加对比度
    kernel2 = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)  # 5X5卷积核
    dst1 = cv.filter2D(image, -1, kernel1)
    dst2 = cv.filter2D(image, -1, kernel2)
    cv.imshow("custom_blur demo1", dst1)
    cv.imshow("custom_blur demo2", dst2)


src = cv.imread('E:/MyFile/Picture/date/lenademo.png')  # 读取椒盐噪声图片

# blur_demo(src)
# median_blur_demo(src)
custom_blur_demo(src)

cv.imshow("src demo", src)
cv.waitKey(0)
cv.destroyAllWindows()

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyCharm是一种集成开发环境(IDE),可以用于Python开发。Anaconda是一个Python发行版,包含了许多常用的科学计算库和工具。Python是一种通用的编程语言,常用于开发各种应用程序。OpenCV是一个开源的计算机视觉库,用于处理图像和视频数据。PyQt是Python的一个GUI库,用于创建图形用户界面。在上述引用,提到了使用PyCharm和Anaconda来配置和管理PythonOpenCV和PyQt的开发环境。通过安装Anaconda,我们可以方便地使用其Python版本、OpenCV和PyQt库,而无需单独下载和配置它们。同时,PyCharm也可以与Anaconda集成,使得开发过程更加便捷。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [2020新版pycharm+anaconda+python+opencv+qt环境配置](https://download.csdn.net/download/weixin_38700430/13749822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pycharm+anaconda+opencv+pyqt环境配置](https://blog.csdn.net/zong596568821xp/article/details/118028155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值