python浮雕图片_用Python来画浮雕画

python浮雕图片_用Python来画浮雕画浮雕艺术在世界各地都可以见到,中国古代在唐朝以来就有许多浮雕效果的东西,很多的大型纪念性建筑都有这种作为装饰,常见的有花窗,龙柱等。简单的来说,浮雕就是把所要呈现的图像突起于石头表面,根据凹凸的程度不同从而形成三维的立体感。用Python画一张浮雕画,那就进行类似的原理,通过勾画图像的轮廓,并且降低周围的像素值,那就可以产生一张具有立体感的浮雕效果图片。我们可以采用相邻像素相减的方法来得到轮廓与平…

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

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

实现浮雕效果的代码如下

import cv2

import numpy as np

img = cv2.imread(‘E:\pythonee\LearnOpenCV\\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来画浮雕画

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

python浮雕图片_用Python来画浮雕画

python浮雕图片_用Python来画浮雕画

欢迎大家关注公众号“计算机视觉与机器学习”

python浮雕图片_用Python来画浮雕画

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151392.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm代码灰色_python import灰色

    pycharm代码灰色_python import灰色问题表述:pycharm中老是import失败,呈现灰色线,我按照、CSDN博客上给的设置“右键点击自己的工作空间,找下面的MarkDirectoryas选择SourceRoot”,但是未解决问题,说明不是我的文件存放不在一个频道(import文件首先会在相同的目录下面寻找)问题在于:我把两个文件相似文件名同时放在一个sourceroot下面,可能会有干扰,于是,解决办法是:完美…

    2022年8月25日
    3
  • java flowable_Flowable流程引擎入门[通俗易懂]

    java flowable_Flowable流程引擎入门[通俗易懂]Flowable是一个流行的轻量级的采用Java开发的业务流程引擎。通过Flowable流程引擎,我们可以部署BPMN2.0的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,等等。Flowable可以灵活地添加到我们的服务、应用、架构中,可以通过引入Flowablejar包,或者直接使用Flowable的RestAPI来进行业务流程引擎的操作。Flowa…

    2022年10月20日
    0
  • MySQL Community Server_应用安装失败怎么解决

    MySQL Community Server_应用安装失败怎么解决官网下载先去官网下载MySQL链接跳转的是mysql的下载地址:https://dev.mysql.com/downloads/mysql/目前最新版的就是8.0.21解压好,是下图的样式初始化配置由于下载好且解压的文件夹没有my.ini文件,所以我这边新建一个,配置我已经给出,大家直接复制根据自己的实际修改即可。好了,准备工作已经完成,现在开始我们正式的初始化吧。直接在地址栏输入cmd,进入命令行界面进行安装操作。可能有些小伙伴会遇上没有权限的情况,就只好以管理员运行了我

    2022年9月30日
    0
  • for while循环语句举例python_python中while和for循环的用法

    for while循环语句举例python_python中while和for循环的用法程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式1.循环控制语句在了解循环语句的使用方法之前,我们先来了解几个循环控制语句:1)…

    2022年9月25日
    0
  • Android开发——RelativeLayout.LayoutParams的使用「建议收藏」

    Android开发——RelativeLayout.LayoutParams的使用「建议收藏」前言在日常的Android开发当中,我们少不了需要动态改变控件在RelativeLayout界面的位置。那么我们就需要使用到RelativeLayout.LayoutParams。RelativeLayout.LayoutParamsRelativeLayout.LayoutParams是一个RelativeLayout的布局参数,我们改变控件的就需要使用到。初始化//包裹内容Rel…

    2022年7月17日
    24
  • React—最简洁的技术学习(一)

    React—最简洁的技术学习(一)React—最简洁的技术学习(一)

    2022年4月21日
    95

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号