代碼地址:https://github.com/Chakid/ImageProcess
浮雕/雕刻算法實質是很簡單地,即:對圖像的每一個點進行卷積處理。假設原圖像爲X,處理後的圖像爲Y;浮雕算法核kernel矩陣定義爲:[1 , 0, 0 ; 0, 0, 0; 0, 0, -1]. 那麼,對於座標爲(i,j)點,浮雕效果圖的算法爲Y(i,j) = X(i+1,j+1)-X(i-1,j-1) + 128。當然,X,Y的取值均在0~255之間。雕刻算法核kernel矩陣定義爲:[1, 0; 0, -1]。那麼,對於座標爲(i,j)點,其浮雕效果圖的算法爲Y(i,j) = X(i,j) - X(i-1,j-1) + 128。當然,X,Y的取值均在0~255之間。
代碼展示:
# coding:utf-8
'''
浮雕效果
'''
import cv2
import numpy as np
gray=cv2.imread('img/cxk.jpg',0)
imgInfo=gray.shape
height=imgInfo[0]
weight=imgInfo[1]
dst=np.zeros((height,weight,1),np.uint8)
for i in range(0,height):
for j in range(0,weight-1):
gray0=gray[i,j]
gray1=gray[i,j+1]
newp=gray0-gray1+150
if newp>255:
newp=255
else:
newp=0
dst[i,j]=newp
cv2.imshow('dst',dst)
cv2.waitKey(0)