山东大学软件学院2018级项目实训 第七周-图像锐化
设置ui的部分参考前几周的博客
关于图像锐化原理部分可以参考博客
先看图像锐化实现的代码:
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('2.png')
kernel = np.array([[0, -2, 0], [-2, 9, -2], [0, -2, 0]], np.float32) #定义一个核
dst = cv.filter2D(img, -1, kernel=kernel)
cv.imshow("1", dst)
cv.waitKey(0)
基于opencv实现,我们可以做一些修改。
我们可以通过设置滑块改变锐化卷积核的数值:
if type == 5:
print('5-图像锐化')
img = instance.m_image
# 定义一个核通过获取滑块的value值实时改变卷积核
kernel = np.array([[0, -value, 0], [-value, value*4+1, -value],
[0, -value, 0]], np.float32)
dst = cv.filter2D(img, -1, kernel=kernel)
instance.temp_image_blur = dst
修改函数定义部分:
def blur(instance, type, value):
# 根据type的类型选择不同模糊方法,比如均值模糊,高斯模糊
kernel = np.ones((value, value), np.uint8)
if type == 0:
print('0-均值模糊')
instance.temp_image_blur = cv.blur(instance.m_image, (value, value))
if type == 1:
print('1-高斯模糊')
value = value * 2 + 1
instance.temp_image_blur = cv.GaussianBlur(instance.m_image, (value, value), 0)
#
if type == 2:
print('2-中位模糊')
value = value * 2 + 1
instance.temp_image_blur = cv.medianBlur(instance.m_image, value)
if type == 3:
print('3-腐蚀')
instance.temp_image_blur = cv.dilate(instance.m_image, kernel, iterations=1)
if type == 4:
print('4-膨胀')
instance.temp_image_blur = cv.erode(instance.m_image, kernel, iterations=1)
if type == 5:
print('5-图像锐化')
img = instance.m_image
kernel = np.array([[0, -value, 0], [-value, value*4+1, -value], [0, -value, 0]], np.float32) # 定义一个核
dst = cv.filter2D(img, -1, kernel=kernel)
instance.temp_image_blur = dst
instance.update_temp_image_for_blur()
下面看一下效果,对模糊图像的锐化效果还是非常不错的