谁说程序员不懂艺术与浪漫?(Python素描画:征服你)

谁说程序员不懂艺术与浪漫?(Python素描画:征服你),第1张

概述Python之绘制素描画作品展示参考代码后序程序员给人的印象总是:标准的理工男,直男,满眼都是code。说的可能就是我(* ̄︶ ̄)可是我们也有艺术细胞的,只不过大多都被code干掉了。o(╥﹏╥)o不过还好,计算机可以帮我们画画呀!感觉还不错,请大家欣赏一下。作品展示参考代码# 绘制素描图 sketch:草图,素描,梗概from PIL import Imageimport numpy as np# 绘制素描图def makeSket Python之绘制素描画@H_502_3@

作品展示

@H_502_3@

实例分析

@H_502_3@@H_502_3@

手绘特征

@H_502_3@

图像的RGB色彩模式

@H_502_3@

图像的数组表示

@H_502_3@

图像的变换

@H_502_3@

梯度重构

@H_502_3@

光源效果

@H_502_3@

图像生成

@H_502_3@

参考代码

@H_502_3@

后序

程序员给人的印象总是:标准的理工男,直男,满眼都是code。
说的可能就是我(* ̄︶ ̄)

可是我们也有艺术细胞的,只不过大多都被code干掉了。
o(╥﹏╥)o

不过还好,计算机可以帮我们画画呀!感觉还不错,请大家欣赏一下。

作品展示


















实例分析手绘特征

手绘效果的几个特征:

@H_502_3@

黑白灰色

@H_502_3@

边界线条较重

@H_502_3@

相同或相近色彩趋于白色

@H_502_3@

略有光源效果

图像的RGB色彩模式

图像一般使用RGB色彩模式,即每个像素点的颜色由红( R )、绿(G)、蓝(B)组成。

RGB三个颜色通道的变化和叠加得到各种颜色,其中

@H_502_3@

R 红色,取值范围,0‐255

@H_502_3@

G 绿色,取值范围,0‐255

@H_502_3@

B 蓝色,取值范围,0‐255

RGB形成的颜色包括了人类视力所能感知的所有颜色。

图像的数组表示


@H_403_199@

图像的变换

梯度重构

光源效果



图像生成

参考代码

参考代码1:

# 绘制素描图 sketch:草图,素描,梗概from PIL import Imageimport numpy as np# 绘制素描图def makeSketch(getUrl, saveUrl):# 获取图片,将图片转化为,mode=L:灰度图,每个像素用 8 位二进制代码表示,astype:并将像素点转化为浮点类型的二维矩阵a = np.array(Image.open(getUrl).convert('L')).astype('float')depth = 10.  # (0-100)'''    梯度计算采用二阶精确中心差分      在内点和一阶或二阶精确的一面      (向前或向后)边界上的差异。      因此,返回的梯度具有与输入数组相同的形状。      '''grad = np.gradIEnt(a)  # 获取图像灰度的梯度值 返回元组 gradIEnt:梯度grad_x, grad_y = grad  # 分别取横纵图像梯度值grad_x = grad_x * depth / 100.grad_y = grad_y * depth / 100.A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)uni_x = grad_x / A    uni_y = grad_y / A    uni_z = 1. / A    vec_el = np.pi / 2.2  # 光源的俯视角度,弧度值vec_az = np.pi / 4.  # 光源的方位角度,弧度值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 轴的影响b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z)  # 光源归一化b = b.clip(0, 255)im = Image.fromarray(b.astype('uint8'))  # 重构图像  a = np.asarray(im)im.save(saveUrl)print('绘制素描画成功')if __name__ == '__main__':getUrl = r'./images/h.jpg'saveUrl = r'./images/hh.jpg'makeSketch(getUrl, saveUrl)

参考代码2:

# 绘制素描图 sketch:草图,素描,梗概'''首先呢,将彩色图转换成灰度图;然后对灰度图进行求其反色的 *** 作;对得到的反色的图片结果采用一个高斯模糊的 *** 作;然后采用颜色亮化(color dodge)的技术再将第一步的灰度图和第三步 *** 作后的图片进行混合,这样就成功地把图片搞成素描了。'''from PIL import Image, ImageFilter, ImageOps# 将像素点颜色亮化def dodge(a, b, Alpha):return min(int(a*255/(256-b*Alpha)), 255)# 绘制素描def drawSketch(img, blur=25, Alpha=1.0):img1 = img.convert('L')  # 图片转换成灰色img2 = img1.copy()  # 复制灰度图片img2 = ImageOps.invert(img2)  # 将图灰度片反色,invert:使前后倒置或反转for i in range(blur):  # 模糊度img2 = img2.filter(ImageFilter.BLUR)wIDth, height = img1.size  # 获取图片的大小# 遍历两张图片的像素矩阵for x in range(wIDth):for y in range(height):a = img1.getpixel((x, y))  # Returns the pixel value at a given positionb = img2.getpixel((x, y))  # 返回指定位置的像素点值img1.putpixel((x, y), dodge(a, Alpha))  # ModifIEs the pixel at the given position.修改指定位置的像素点值# 调用系统接口显示图片img1.show()# 保存图片到指定路径img1.save(saveUrl)print('绘制素描成功')if __name__ == '__main__':getUrl = './images/a.jpg'saveUrl = './images/aaa.jpg'img = Image.open(getUrl)  # 获取图片drawSketch(img)
后序

PIL(Python Image library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。

PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是frIEndly fork for PIL,其功能和PIL差不多,但是支持python3。

关于Pillow库的相关使用,有时间的话,我会单独整理出来。

蟹蟹欣赏啦!
(* ̄︶ ̄)

总结

以上是内存溢出为你收集整理的谁说程序员不懂艺术与浪漫?(Python素描画:征服你)全部内容,希望文章能够帮你解决谁说程序员不懂艺术与浪漫?(Python素描画:征服你)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1189187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存