首先我们来看看原图:

接着我们来看看效果图:

通过分析我们不难发现以下特征:

主要颜色为黑白灰

边界线条较重

相同或相近色趋于白色

略有光源效果

需要用到的库有:

numpy

PIL

代码实现:

import numpy as np

from PIL import Image

baseImg = Image.open("./img/myimg2.jpg").convert("L")  # 这里放置你要手绘的图片原图

a = np.array(baseImg).astype("float")

depth = 8.

grad = np.gradient(a)  # 取图像灰度的梯度值

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.sin(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)                      # 限制

img = Image.fromarray(b.astype("uint8")) # 重构图像

img.save("./toImg/myImage1.jpg")         # 保存图像

实例扩展:

from PIL import Image

import numpy as np

#为了便于文件的导入,可以使用相对路径,将文件和程序放在同一个文件夹下

vec_el=np.pi/2.2

vec_az=np.pi/4.

depth=10.

im=Image.open("HIT2.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)

dy=np.cos(vec_el)*np.sin(vec_az)

dz=np.sin(vec_el)

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('hit2-SH.jpg')

到此这篇关于Python实现手绘图效果实例分享的文章就介绍到这了,更多相关Python实现手绘图效果内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: Python实现手绘图效果实例分享

本文地址: http://www.cppcns.com/jiaoben/python/325812.html

python手绘教学_Python实现手绘图效果实例分享相关推荐

  1. python手绘教学_Python实现手绘功能

    手绘图确实很好看,但对于手残党的我,只能呵呵一笑,今天就用代码来实现手绘功能,把普通的图片转换为手绘图片. 代码 from PIL import Image import numpy as np a ...

  2. python画黑白线条_Python实现手绘图效果实例分享

    首先我们来看看原图: 接着我们来看看效果图: 通过分析我们不难发现以下特征: 主要颜色为黑白灰 边界线条较重 相同或相近色趋于白色 略有光源效果 需要用到的库有: numpy PIL 代码实现: im ...

  3. python手绘效果图_Python实现手绘图

    利用python的Numpy及PIL第三方库实现图片的手绘效果.PIL第三方库是一个具有强大图像处理能力的第三方库. 数字图像数据可以用矩阵来表示,因此可以采用矩阵理论和矩阵算法对数字图像进行分析和处 ...

  4. python手绘代码_Python实现手绘功能

    Python实现手绘功能 2 个月前 手绘图确实很好看,但对于手残党的我,只能呵呵一笑,今天就用代码来实现手绘功能,把普通的图片转换为手绘图片. 代码 from PIL import Image im ...

  5. python输出国际象棋棋盘_python输出国际象棋棋盘的实例分享

    国际象棋是当今国际上最流行的智力体育运动项目.青年人下棋可以锻炼思维.增强记忆力和培养坚强的意志:中年人下棋可以享受美学:老年下棋可以很好的休息娱乐.国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘 ...

  6. python打印国际象棋棋盘_python输出国际象棋棋盘的实例分享

    国际象棋是当今国际上最流行的智力体育运动项目.青年人下棋可以锻炼思维.增强记忆力和培养坚强的意志:中年人下棋可以享受美学:老年下棋可以很好的休息娱乐.国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘 ...

  7. 用python输出国际象棋棋盘_python输出国际象棋棋盘的实例分享

    国际象棋是当今国际上最流行的智力体育运动项目.青年人下棋可以锻炼思维.增强记忆力和培养坚强的意志:中年人下棋可以享受美学:老年下棋可以很好的休息娱乐.国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘 ...

  8. 用python画雪花飘落_python实现雪花飘落效果实例讲解

    在学习pygame模块过程中,我们可以通过使用 pygame模块实现很多功能性的东西,但是很多人应该没有利用pygame实现过雪花飘落的效果吧,有时候可能是不知道从何入手或者是没有时间写,接下来我就教 ...

  9. python做雪花飘落_python实现雪花飘落效果实例讲解

    在学习pygame模块过程中,我们可以通过使用 pygame模块实现很多功能性的东西,但是很多人应该没有利用pygame实现过雪花飘落的效果吧,有时候可能是不知道从何入手或者是没有时间写,接下来我就教 ...

最新文章

  1. VC:其他控件(CProgressCtrl、CScrollBar、CDateTimeCtrl、CMonthCalCtrl)
  2. duilib 子窗口位置_duilib绝对定位与相对定位
  3. Android http通信案例
  4. hdu1506 dp
  5. 在计算机术语中 将ALU控制器和,计算机组成原理试题与答案
  6. VS工作笔记-C++在release模式下可以进行调试
  7. 使用智能移动设备访问Ossim制
  8. OceanBase数据库开发和运维漫谈
  9. SQL删除语句同时向备份表插入数据
  10. 导入要素类到要素数据集当中(C++)(ArcObject)史上最快
  11. POJ 2773 Happy 2006 (容斥原理)
  12. python操作autocad_利用python控制Autocad:pyautocad方式
  13. Sql语法-Oracle
  14. Ubuntu:安装rust
  15. 基因家族分析②:linux下blast的安装和使用
  16. HEVC视频扩展解决方法
  17. getcontext方法 getactivity方法的区别
  18. 服装店怎样免费引流?服装店免费又实用的引流技巧
  19. 深入理解MDL元数据锁
  20. 408 | 【2010年】计算机统考真题 自用回顾知识点整理

热门文章

  1. 手机的寿命一般是多久?
  2. PHP在线网课问答题库搜索,选修课题库,大学生网课搜题神器,超星网课搜题软件,知到章节搜题app...
  3. 请求方法 GET 和 POST 的区别
  4. Unreal Open Day 2017整理
  5. python缩进规则 至少_6.Python缩进规则(包含快捷键)
  6. 【动规递推】聪明伶俐的香穗子
  7. C++游戏开发实战视频教程
  8. 【python 水印生成器】python制作图片水印
  9. 新支点聚合路由器B4G+5G是什么意思?
  10. jquery validation engine ajax,validationEngine ajax验证 java