山东大学软件学院2018级项目实训 第七周-解决一个小问题

山东大学软件学院2018级项目实训 第七周-解决一个小问题

问题

在拖动滑块调整平滑操作的卷积核大小过程中,发现多次使用均值模糊都没有问题。但使用高斯模糊和中位模糊时有时候可以完成操作,但有时候会直接退出程序

之后多次检查代码(**一个非常折磨且漫长的过程 **)无误后,想到可能是opencv实现高斯模糊和中位模糊的代码出问题了
(其实不是opencv的代码有问题,而是我的操作出了问题)在这里插入图片描述

原来事情是这样的!

均值模糊的卷积核大小可以是偶数,即允许输入一个6*6大小的卷积核:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('2.png')
b,g,r = cv.split(img)
img= cv.merge([r,g,b])
blur = cv.blur(img,(6,6))
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

6*6大小的均值模糊滤波器
然鹅!
中值滤波器和高斯滤波器的卷积核大小都必须是奇数
在这里插入图片描述
可以看到,将卷积核大小改为偶数后就会报错
在这里插入图片描述

解决办法

我能想到的一个比较简单的解决办法是,把slider输入的数值都进行value=value*2 -1操作:

    if type == 1:
        print('1-高斯模糊')
        value = value*2 + 1
        intstance.temp_image_blur = cv.GaussianBlur(intstance.m_image, (value, value), 0)

这样做的好处是,对图像的模糊是随着滑块滑动连续变化的
但缺点是,相比于均值模糊,使用这种操作的图像平滑可能会变化过大

至此,图像平滑和形态变化的所有UI都已实现
芜湖!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值