python实例练习(9)图像的手绘效果

文章目录

    • 简介
    • 图像的数组表示
    • 图像的手绘处理

简介

在之前的学习笔记的实例中,我们曾经使用PIL库获取了图像的轮廓,虽然我们成功提取出来了,但是这个轮廓缺少了立体感,视觉效果上缺少了丰满度,光线照射的明暗变化是空间素描的基本方法,而本文将会使用一个实例为各位介绍python程序如何来提现图片的深浅层次变化,从而使得图像轮廓更富立体感、空间感和层次感,在观感上接近真人手绘素描的效果。

图像的数组表示

图像是有规则的二维数据,可以使用numpy库将图像转为数组对象,以著名歌手周杰伦的照片为例,名称为pic.jpg,放置在程序所在目录中,方法如下:

from PIL import Image
import numpy as np
im = np.array(Image.open('pic.jpg'))
print(im.shape, im.dtype)

在这里插入图片描述
图像转换对应的ndarray是三维数据,如上图所示,(630,630,3),前两维是图像的长度和宽度,单位是像素,第三位是每个像素点的RGB值,每个RGB值是一个单字节整数。
PIL库有着图像转换函数,可以改变图像的表示形式。使用convert()函数即可,这就是‘L’模式,表示将像素从RGB的三字节变为单一数值表示,此时数值范围为0~255,从彩色变为带有灰度的黑白色。转换后,之前三维的ndarray变为二维数据,每个像素点只有一个整数表示。
需要修改的是上例中的这条语句:

im = np.array(Image.open('pic.jpg').convert('L'))

运行后对比如下:
在这里插入图片描述
通过对图像的数组转换,可以访问图像上的任意一个像素值。例如,获取位于坐标(20,300)像素的颜色值,或者获取图像的最大最小像素值,也能够切片来获取指定行列的元素值,各位读者甚至能够在获取之后修改它。

from PIL import Image
import numpy as np
im = np.array(Image.open('pic.jpg').convert('L'))
print(im.shape, im.dtype)
print(im[20,300])
print(int(im.min()),int(im.max()))

在这里插入图片描述
读入图像后,可以通过任意数学操作获取相应的图像变换,这里以灰度变换为例子,分别对灰度变化后的图像进行反变换、区间变化以及像素值平方处理。不过需要注意,有些数学变换会改变图像的数据类型,所以在生成图像前需要通过numpy.uint()进行一次转换运行效果如下所示:

from PIL import Image
import numpy as np
im = np.array(Image.open('pic.jpg').convert('L'))
im1 = 255-im
im2 = (100/255)*im+150
im3 = 255*(im1/255)**2
pil_im = Image.fromarray(np.uint(im1))#修改参数后分别执行im1,im2,im3
pil_im.show()

im1
im2
im3
灰度处理后的原图像如下所示:
在这里插入图片描述

图像的手绘处理

在此之前,我们介绍过获取图片轮廓滤镜的使用,虽然它能够获取图像轮廓信息,但是在视觉上缺乏立体感,那么有解决方案吗?
答案是有的,为了实现手绘风格,首先需要读取原图像的明暗变化,也就是灰度值,从直观视觉感受上来讲,图像灰度值发生显著变化的地方就是梯度值,它描述的是图像灰度变化的强度,通常能够使用梯度变化来获取图像轮廓,在numpy中提供有获取灰度图像梯度的函数gradient(),传入图像数组就能够表示返回代表x和y的各自方向上的梯度变化的二维元组。下面是实例完整代码和与轮廓获取的对比以及原图图像。

from PIL import Image
import numpy as np
vec_el = np.pi/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/4. # 光源的方位角度,弧度值
depth = 10. # (0-100)
im = Image.open('pic.jpg').convert('L')
a = np.asarray(im).astype('float')
grad = np.gradient(a) #取图像灰度的梯度值
grad_x, grad_y = grad #分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
dx = np.cos(vec_el)*np.cos(vec_az) #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) #光源对y 轴的影响
dz = np.sin(vec_el) #光源对z 轴的影响
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A
a2 = 255*(dx*uni_x + dy*uni_y + dz*uni_z) #光源归一化
a2 = a2.clip(0,255)
im2 = Image.fromarray(a2.astype('uint8')) #重构图像
im2.save('picHandDraw.jpg')

在这里插入图片描述
与轮廓获取的对比(左图手绘效果,右图轮廓获取):
在这里插入图片描述
原图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/53559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 实现图像的手绘效果

图像的数组表示 1、图像一般使用RGB色彩模式,即每个像素点的颜色由红(R)、绿(G)、蓝(B)组成。 RGB三个颜色通道的变化和叠加得到各种颜色,其中 • R 红色,取值范围,0‐255 • G 绿色,取值范围,0‐255 •…

《应试教育洗礼的“好”学生的学习行为特征分析》 2019-11-02

1 引言 小明是在应试教育中凭借自己的努力一步步考上了重点大学的研究生,每年都要学习好几门课程而且考试成绩都非常好排名数一数二获得很多荣誉,是经常被各种称赞的好学生,但小明真的是"好"学生吗,是具备科研素质能够…

ChatGPT 和 Whisper 模型的区别

ChatGPT和Whisper模型是两个不同的模型,但都是由OpenAI开发的基于自然语言处理(NLP)的人工智能技术。 ChatGPT是一种基于GPT(Generative Pre-trained Transformer)架构的语言模型,它可以生成自然流畅的文本…

微信公众号抓包

2.打开burp,打开公众号 直接逮住

微信公众号三方平台开发【全网发布及全网发布接入检测】

经过之前系列内容过后,接下来的代微信公众号实现业务部分跟微信公众号开发业务逻辑一样,所以公众号其他业务功能部分后面我会单独整理一套相关内容,今天,咱们就来说说微信第三方平台开发的最后一步—— 全网发布,因为只…

wechat-0010,微信公众号,接入微信公众平台

demo:https://github.com/wenrongyao/wechat-demo 接入准备: 1、有一个能在公网上访问的项目 可以用内网穿透(推荐使用natapp),微信接入必须使用80端口或443端口,某壳现在需要花钱才能使用80端口,果断放弃…

微信公众平台测试帐号申请及Token验证地址提供

1、浏览器打开微信公众平台测试帐号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login, 通过微信扫一扫授权就能进入到测试号管理页面。 上面图中 有个接口配置信息 需要你自己有服务器提供接口来接收微信的token验证 配置了验…

微信开放平台,公众号第三方平台接入

微信开放平台和公众平台的区别 开放平台是网站或app使用的接口平台,利用开放平台可在自己的网站或app上开发微信帐户登录、微信分享等功能! 公众平台是微信号的一种,也具有开发功能,是在公众号中开发出更多功能,例如微…

抑郁症前期如何治疗,有哪些方法?

随着社会的告诉发展,越来越多的人因为不喜欢职场上的花花绕绕,喜欢独自待在家里,不管是做什么,发呆也好,追剧也罢,总之拒绝和人交流沟通就可以。久而久之,就容易形成一个性格孤僻、不喜欢与人交…

脑电植入:治疗抑郁症的新方法?重磅!UCSF研究人员成功治疗一例重度抑郁症患者

患者 Sarah 在诊所与精神病学家 Katherine Scangos 在一起 © Maurice Ramirez,UCSF Sarah多年来饱受着严重且无法治愈的抑郁症的折磨。她说:“我每天都强迫自己克制自杀冲动,而这种冲动每小时就会出现好几次。” 近日,加州大学旧金山分校…

好心情医生:精神病性症状≠精神分裂症

01 幻觉和妄想是最常见的精神病性症状 精神病性症状有哪些?哪些疾病会出现精神病性症状?我们通常说的精神病性症状,就是经常提到的认知方面的异常,如感知觉异常,如出现幻听、幻视、幻嗅等幻觉;思维内容异…

抑郁症要身心同治

来源:中国数字科技馆 “没有人对抑郁症有绝对的免疫力。”著名心理学家马丁塞利曼将抑郁症称为精神病学中的“感冒”。世界卫生组织预计,到2020年抑郁症将跃至全球第二大疾病,自杀是其最可怕的症状。抑郁症可导致躯体各种功能的障碍&#xf…

抑郁症维持期治疗应维持多久?如何管理患者发生停药反应的风险?

抑郁症的治疗往往需要一个比较长的治疗阶段,其中维持期是抑郁症治疗的非常重要的一个阶段,同时,也是很多患者在维持期选择放弃了治疗,甚至有一些学者会认为维持期的时间过长,不利于患者的服药依从性。那么抑郁症维持期…

好心情发布《2022国民抑郁症蓝皮书》

抑郁症是全球常见病,据世界卫生组织数据显示,全球抑郁症患者高达3.22亿。据最新的流行病学调查数据估算,我国抑郁症患者将近5000万,新冠疫情后,抑郁症的患病人数更是大幅增加。但事实上,大众对于抑郁症的了…

好心情心理咨询:抑郁焦虑,都是反刍思维惹的祸,4招打破

(图源:网络) 武林外传中佟掌柜的口头禅让人上头,其实这话我们也老说,常常每到夜晚就开启“网抑云”模式,脑中就滚动播放这些微不足道的憾事,而且还是重播! 网络上戏称人生憾事归结…

好心情互联网医院:抑郁症一直吃药,为何还会复发?

原标题:抑郁症一直吃药,为何还会复发?如何才能终身不复发? 一位抑郁症病友在网上分享了自己患病25年的经历: 我是1995年被确诊了抑郁症,吃了两个月的药后,我觉得自己又活过来了,之后就没再坚持吃药&#…

会议报道丨心语心“悦”——抑郁症诊疗进展“大咖”谈(三)

2022年10月27日,灵北中国举办的心语心“悦”——抑郁症诊疗进展“大咖”谈系列会议第三期于线上圆满召开。本次大会邀请到中南大学湘雅二医院的李凌江教授、首都医科大学附属北京安定医院的张玲教授、武汉大学人民医院的刘忠纯教授和南京医科大学附属脑科医院的姚志…

好心情:抑郁症治疗究竟需要花多少钱?

最近,后台一名刚患病的抑郁症患者小K留言给好心情小编,原文是这样的: 感觉自己已经得了抑郁症,但是自己家庭条件并不是很好,自己最近一两年也没有工作,因此也没有医疗保险。抑郁症治疗会不会很贵&#xff0…

JAMA Psychiatry:老年抑郁症患者的神经影像学、认知、临床症状和遗传学的异质性表征

重要性:老年抑郁症(LLD)的临床表现具有相当大的异质性。揭示这种异质性可能有助于阐明LDD的发病机制,并有助于精准和个性化治疗LDD。 目的:横向和纵向描述与神经解剖学、认知功能、临床症状和遗传图谱相关的LLD异质性…

老年期抑郁症的机制及治疗

抑郁症对生理疾病易感,并促进端粒缩短、大脑衰老和表观遗传衰老等生理衰老。同时,生理疾病还增加了老年抑郁症的风险。抑郁症的老化相关的病程变化和疾病相关的病程变化是相关的,并产生了相应的致病假设和提供了治疗方向。比如,在…