学习笔记python+opencv利用拉普拉斯算子锐化与sobel算子锐化

应数字图像处理实验要求对图像进行锐化处理,使用opencv中的函数进行锐化操作

 

拉普拉斯算子运算后彩色图像效果比较明显,sobel算子与原图像堆叠之后在彩色图像锐化相当明显,但是与原图像色彩区别过大,在原图转换为灰度图像之后细节较多。

#导入库
import cv2
import numpy as np
#导入图片
img=cv2.imread("C:/Users/User/Desktop/fire.jpg")
#转换灰度
gimg=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#拉普拉斯算子锐化
kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)#定义拉普拉斯算子
dst=cv2.filter2D(img,-1,kernel=kernel)#调用opencv图像锐化函数
#sobel算子锐化
#对x方向梯度进行sobel边缘提取
x=cv2.Sobel(gimg,cv2.CV_64F,1,0)
#对y方向梯度进行sobel边缘提取
y=cv2.Sobel(gimg,cv2.CV_64F,0,1)
#对x方向转回uint8
absX=cv2.convertScaleAbs(x)
#对y方向转会uint8
absY=cv2.convertScaleAbs(y)
#x,y方向合成边缘检测结果
dst1=cv2.addWeighted(absX,0.5,absY,0.5,0)
#与原图像堆叠
res=dst1+gimg
#测试
#print("dstshape:",dst1)
#print("resshape:",res)
#按要求左右显示原图与拉普拉斯处理结果
imges1=np.hstack([img,dst])
cv2.imshow('lapres',imges1)
#按要求左右显示原图与sobel处理结果
image=np.hstack([gimg,res])
cv2.imshow('sobelres',image)
#去缓存
cv2.waitKey(0)
cv2.destroyAllWindows()

 彩色图像实验只需要把gimg改成img就可以看到结果了

下图为拉普拉斯算子锐化结果,锐化较明显

 图为彩色图像sobel算子与原图像堆叠锐化结果 ,效果相当明显,但是色彩明显与原图不同

学习笔记python+opencv利用拉普拉斯算子锐化与sobel算子锐化_第1张图片

下图为灰白图像sobel算子与原图像堆叠锐化效果

学习笔记python+opencv利用拉普拉斯算子锐化与sobel算子锐化_第2张图片

本文仅作为学习交流使用,如有错误强烈欢迎指正,若侵权请联系我删除侵权内容。

你可能感兴趣的:(opencv,python,计算机视觉)