Python实现为图像添加下雪特效
作者:顾木子吖 发布时间:2021-07-10 11:28:45
标签:Python,雪,特效
导语
也许是为了和音,在立冬这一天的人间里
北方多个城市,悄然降下冬天的第一场初雪,组成了一段旋律💨
一天过两季,黄叶转飞花——从天而降落,昼夜不停,一夜醒来,阁檐染白,故宫完成秋冬交接,
来自北方的故事纷纷踏雪而来。
琼楼银装,粉饰玉砌,不觉恍入天上仙境,宫墙内宾客如云,宫墙外车水马龙,若把故宫作天宫,
整夜冬天不觉冷。(可以穿秋裤了.jpg)
(本文的部分素材是在北京故宫的朋友,今天游玩刚拍出来的哈——新鲜出炉
今天直接来几组关于【故宫,下雪了!】给我们南方的小伙伴儿近距离看下故宫雪景图~希望大家喜欢!
你去过故宫吗?如果没去过那跟着小编一起走进北京故宫的初雪吧~(我没看过,只能看图)
无论南北 无论男女 无论你是否见过雪,我们似乎都共同喜欢着她,大抵因为在漫长的冰冷时节中
她是老天给予人间的惊喜意外,就像漫天黑夜里的繁星,像狂风暴风雨后的彩虹。
一、故宫下雪了:界面小程序
1)附主程序
# 初始化pygame
pygame.init()
# 根据背景图片的大小,设置屏幕长宽
SIZE = (850, 560)
screen = pygame.display.set_mode(SIZE)
pygame.display.set_caption("故宫下雪了——小程序")
bg = pygame.image.load('snow.jpg')
# 雪花列表
snow_list = []
# 初始化雪花:[x坐标, y坐标, x轴速度, y轴速度]
for i in range(200):
x = random.randrange(0, SIZE[0])
y = random.randrange(0, SIZE[1])
sx = random.randint(-1, 1)
sy = random.randint(3, 6)
snow_list.append([x, y, sx, sy])
clock = pygame.time.Clock()
# 游戏主循环
done = False
while not done:
# 消息事件循环,判断退出
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# 黑背景/图片背景
# screen.fill((0, 0, 0))
screen.blit(bg, (0, 0))
# 雪花列表循环
for i in range(len(snow_list)):
# 绘制雪花,颜色、位置、大小
pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3]-3)
# 移动雪花位置(下一次循环起效)
snow_list[i][0] += snow_list[i][2]
snow_list[i][1] += snow_list[i][3]
# 如果雪花落出屏幕,重设位置
if snow_list[i][1] > SIZE[1]:
snow_list[i][1] = random.randrange(-50, -10)
snow_list[i][0] = random.randrange(0, SIZE[0])
# 刷新屏幕
pygame.display.flip()
clock.tick(20)
2)效果展示
Part 01 展示——
Part 02 展示——
二、故宫下雪了:手绘素描
1)主程序
root = tkinter.Tk().withdraw()
filename = tkinter.filedialog.askopenfilename() # 打开选择文件对话框
try:
depth = 30 # 0-100,越高,颜色越深
picture_grad = np.gradient(np.asarray(Image.open(filename).convert('L')).astype('int')) # 取图像灰度的梯度值
grad_x, grad_y = picture_grad[0] * depth / 100., picture_grad[1] * depth / 100. # 将获取的维度梯度值进行深度处理
base = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.) # 降噪基
_x, _y, _z = grad_x / base, grad_y / base, 1. / base
sce_z, sce_x = np.pi / 2.1, np.pi / 3 # 光源的俯视角度值和方位角度值
# 光源对x,y,z 轴的影响
dx, dy, dz = np.cos(sce_z) * np.cos(sce_x), np.cos(sce_z) * np.sin(sce_x), np.sin(sce_z)
Normalized = 255 * (dx * _x + dy * _y + dz * _z).clip(0, 255) # 光源归一化
im = Image.fromarray(Normalized.astype('uint8')) # 重构图像
im.save('转换后的素描图.jpg') # 保存转换后的图片
im.show() # 展示转换后的图片
except Exception:
print('转换失败!')
2)效果展示
Part 01 展示——
Part 02 展示——
来源:https://blog.csdn.net/weixin_55822277/article/details/121226392
0
投稿
猜你喜欢
- 1. APScheduler简介APscheduler全称Advanced Python Scheduler作用为在指定的时间规则执行指定的
- 下面的这个函数实现的功能是列出某文件夹下的所有文件,以文件名字母排序,先数字后字母再到中文。<%
- 前话最近跟着廖雪峰的教程学到 模块 这一节。关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍:模块在计算机程序的开发过程中,随着程
- 编者注:当讲到了性能优化和案例方面的东西,就要想到如何从开发人员的角度进行了理解,认识SQL是如何执行,以及如何学习高级的SQL,这篇文章对
- 今天看看那些知名的Logo,可能你没注意过,它们也是一直在变化,有的还挺雷人的!先从时尚的苹果开始吧,苹果也有土的时候。1976年那第一个L
- 1. 用户输入内容与打印输入:input()输出:print()例1,输入字符串,并原样输出a = input('请输入一些字符
- 知识点图像模块 (Image.Image)Image模块的功能Image模块的方法ImageChops模块ImageColor模块基础使用图
- css可以处理16,777,216颜色,可以使用名字、rgb值或十六进制代码。red红色等同于 rgb(255,0,0) &nbs
- 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。 下面是具体的做法: 一:跳
- Pillow图像降噪处理由于成像设备、传输媒介等因素的影响,图像总会或多或少的存在一些不必要的干扰信息,我们将这些干扰信息统称为&l
- 很多时候,设计师们都会通过各种渠道去了解用户的需求,然而从这些渠道反馈回来的信息大部分只是用户的期望并不是真正的用户需求,但是很多时候这些期
- 一、构造函数 __init__ 与__new____new__ 作用: 创建对象,并分配内存__init__ 作用: 初始化对
- Asterisk 是一个开放源代码的软件VoIP PBX系统,我们用Asterisk 搭建企业内部电话系统。Asterisk AMI的Ast
- 1、你需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URL Scheme 等等。检 查 字 符 串 开 头 或 结 尾
- 这篇文章主要介绍了微信小程序 云开发模糊查询实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 本文实例讲述了Python将xml和xsl转换为html的方法。分享给大家供大家参考。具体分析如下:这里需要用libxml2,所以还要先安装
- 在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info / geturl urlopen返回的应答对象respo
- 浏览器对于CSS的支持问题落后于CSS的发展,以占有市场绝对份额的Internet Explorer来说,直到其前不久发布的第8个版本才刚刚
- 前言Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义。本文主要给大家介绍了关于
- 从毕业实习算起,从事可用性方面的工作到现在已经5年了。在此记录笔者的一些所见所想,和大家讨论分享一下。用户研究在“以用户为中心”的界面设计方