python -opencv 图像锐化
图像锐化其实,是一种增强图片对比度的技术,我们可以通过计算图像的导数,把导数绝对值数值大于零的数值加回原图像,通过这种方法,可以增强图像的对比度。
实现代码如下:
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import osimport cv2plt.rcParams['font.family'] = 'Microsoft YaHei'def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()path=r'D:\learn\photo\cv\muxing.jpg'img=cv2.imread(path,0)row,col=img.shape
gra=np.zeros((row,col))
img=img.astype('float')
gra=gra.astype('float')
for x in range(row-1):for y in range(col-1):gx=abs(img[x+1,y]-img[x,y])gy=abs(img[x,y+1]-img[x,y])gra[x,y]=gx+gysharp=img+gra
sharp=np.where(sharp>255,255,sharp)
sharp=np.where(sharp<0,0,sharp)
gra=gra.astype('uint8')
sharp=sharp.astype('uint8')
#cv_show('img',img)
#cv_show('sharp',sharp)plt.subplot(121)
plt.imshow(img,'gray')
plt.title('原图')plt.subplot(122)
plt.imshow(sharp,'gray')
plt.title('锐化图')
#plt.subplot(223)
#plt.imshow(img_s)
#plt.title('平移')
#plt.subplot(224)
#plt.imshow(img_r)
#plt.title('旋转')
plt.show()
os.system("pause")
运行结果如下: