Opencv-python滤镜系列(1): 浮雕和雕刻滤镜效果实现
浮雕滤镜
原理: 根据像素与周围像素的差值确定滤波后的像素值,差别较大的像素(边缘点通常像素差别较大)像素值较大,在灰度图中表现为较亮,边缘凸显,形成浮雕状,然后加上一个灰度偏移值128,作为图片的整体底色。
实现: 浮雕算法是对图像的每一个点进行卷积处理,采用的矩阵如下:
[[1,0],
[0,-1]]
效果:
雕刻效果卷积核算子:
[[-1,0],
[0,1]]
其他卷积核算子:
[[0,1],
[-1,0]]
[[0,-1],
[1,0]]
[[1,0,0],
[0,0,0],
[0,0,-1]]
[[-1,0,0],
[0,0,0],
[0,0,1]]
python实现源代码:
import cv2
import numpy as np
def Filter_Fudiao(src_img):
# filter=np.array([[-1,0,0],[0,0,0],[0,0,1]])
filter = np.array([[-1, 0], [0, 1]])
row=src_img.shape[0]
col=src_img.shape[1]
new_img=np.zeros([row,col],dtype=np.uint8)
for i in range(row-1):
for j in range(col-1):
new_value = np.sum(src_img[i:i + 2, j:j + 2] * filter) + 128 # point multiply
if new_value > 255:
new_value = 255
elif new_value < 0:
new_value = 0
else:
pass
new_img[i, j]=new_value
return new_img
src_img_name='timg.jpg'
src_img=cv2.imread(src_img_name)
gray_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)
new_img=Filter_Fudiao(gray_img)
cv2.imshow('src',src_img)
cv2.imshow('fudiao',new_img)
cv2.waitKey()
参考博客:
https://blog.****.net/nominior/article/details/82956127
https://blog.****.net/zhazhiqiang/article/details/41485283