作品展示
@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素描画:征服你)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)