opencv学习18——浮雕效果

一、

浮雕效果

1.基本原理:根据像素与周围像素的差值确定像素值,差别较大的像素(边缘点通常像素差别较大)像素值较大,在灰度图中表现为较亮,边缘凸显,形成浮雕状,然后加上一个灰度偏移值,作为图片的整体底色。

2.八向浮雕:最基本的浮雕效果,根据像素值与周围八个方向的像素值的插值确定新的方向,常用于右下进行做差

3.调和浮雕,综合像素与左上、右上、左下、右下四个方向的差值确定新像素

4.相较而言,八向浮雕的立体效果更为明显,而调和浮雕的轮廓更为明显

二、

1.八向浮雕

import cv2
import numpy as np

img = cv2.imread('image01.jpg',1)
imgHeight,imgWidth,imgDeep = img.shape

grayImg = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

dstImg = np.zeros((imgHeight, imgWidth, 1), np.uint8)

for i in range(imgHeight-1):
    for j in range(imgWidth-1):
        p0 = int(grayImg[i,j])
        p1 = int(grayImg[i+1,j+1])
        newP = p0 - p1 + 128
        if newP > 255:
            newP = 255
        elif newP < 0:
            newP = 0
        else:
            pass
        dstImg[i, j] = newP

cv2.imshow('', dstImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.调和浮雕

import cv2
import numpy as np

img = cv2.imread('image01.jpg',1)
imgHeight,imgWidth,imgDeep = img.shape

grayImg = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

dstImg = np.zeros((imgHeight, imgWidth, 1), np.uint8)

for i in range(1,imgHeight-1):
    for j in range(1,imgWidth-1):
        p0 = int(grayImg[i,j])
        p1 = int(grayImg[i-1,j-1])
        p2 = int(grayImg[i + 1, j - 1])
        p3 = int(grayImg[i+1,j+1])
        p4 = int(grayImg[i-1,j+1])
        newP = p0*4 - p1 -p2-p3-p4 + 128
        if newP > 255:
            newP = 255
        elif newP < 0:
            newP = 0
        else:
            pass
        dstImg[i, j] = newP

cv2.imshow('', dstImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/nominior/article/details/82956127
今日推荐