美文网首页python热爱者Python新世界
python鬼才利用Python来画浮雕画,彻底打脸某校插画专业

python鬼才利用Python来画浮雕画,彻底打脸某校插画专业

作者: 48e0a32026ae | 来源:发表于2018-11-30 14:53 被阅读0次

学习Python中有不明白推荐加入交流群

                号:516107834

                群里有志同道合的小伙伴,互帮互助,

                群里有不错的学习教程!

浮雕艺术在世界各地都可以见到,中国古代在唐朝以来就有许多浮雕效果的东西,很多的大型纪念性建筑都有这种作为装饰,常见的有花窗,龙柱等。

简单的来说,浮雕就是把所要呈现的图像突起于石头表面,根据凹凸的程度不同从而形成三维的立体感。

用Python画一张浮雕画,那就进行类似的原理,通过勾画图像的轮廓,并且降低周围的像素值,那就可以产生一张具有立体感的浮雕效果图片。我们可以采用相邻像素相减的方法来得到轮廓与平面的差,类似边缘的特征,从而获得这种立体感,为了增强图片的主观感受,我们还可以给这个差加上一个固定值。

那具体怎么实现呢?首先先把图片读入内存,转化为灰度图像,使用当前像素值 = 相邻像素值之差来得到图像的边缘特征,在加上固定数值150就可以得到浮雕效果了。

实现浮雕效果的代码如下

import cv2

import numpy as np

img = cv2.imread('E:pythoneeLearnOpenCV\test222.jpg',1)

imgInfo = img.shape

height = imgInfo[0]

width = imgInfo[1]

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

dstImg = np.zeros((height,width,1),np.uint8)

# 算法:newPixel = grayCurrentPixel - grayNextPixel + 150

for i in range(0,height):

for j in range(0,width-1):

grayCurrentPixel = int(gray[i,j])

grayNextPixel = int(gray[i,j+1])

newPixel = grayCurrentPixel - grayNextPixel + 150

if newPixel > 255:

newPixel = 255

if newPixel < 0:

newPixel = 0

dstImg[i,j] = newPixel

cv2.imshow('dstImg',dstImg)

cv2.waitKey(0)

注意在这里图像像素是用0-255的范围表示的,所以当像素值大于255时,需要将他变为255。

浮雕效果结果显示对比

这就是图像的浮雕效果啦,还可以用不同的图片试试效果。

就是这么有趣,以后有时间还为大家分享一些制作素描画,毛玻璃效果,马赛克,滤镜效果的方法。

相关文章

网友评论

    本文标题:python鬼才利用Python来画浮雕画,彻底打脸某校插画专业

    本文链接:https://www.haomeiwen.com/subject/qpdhcqtx.html