Python實(shí)現(xiàn)手繪圖效果實(shí)例分享
首先我們來看看原圖:

接著我們來看看效果圖:

通過分析我們不難發(fā)現(xiàn)以下特征:
-
主要顏色為黑白灰
-
邊界線條較重
-
相同或相近色趨于白色
-
略有光源效果
需要用到的庫(kù)有:
-
numpy
-
PIL
代碼實(shí)現(xiàn):
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) # 光源對(duì)x軸的影響
dy = np.sin(vec_el)*np.sin(vec_az) # 光源對(duì)y軸的影響
dz = np.sin(vec_el) # 光源對(duì)z軸的影響
b = 255*(dx*uni_x+dy*uni_y+dz*uni_z) # 光源歸一化
b = b.clip(0,255) # 限制
img = Image.fromarray(b.astype("uint8")) # 重構(gòu)圖像
img.save("./toImg/myImage1.jpg") # 保存圖像
實(shí)例擴(kuò)展:
from PIL import Image
import numpy as np
#為了便于文件的導(dǎo)入,可以使用相對(duì)路徑,將文件和程序放在同一個(gè)文件夾下
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')
到此這篇關(guān)于Python實(shí)現(xiàn)手繪圖效果實(shí)例分享的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)手繪圖效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于你不想知道的所有Python3 unicode特性
我的讀者知道我是一個(gè)喜歡痛罵Python3 unicode的人。這次也不例外。我將會(huì)告訴你用unicode有多痛苦和為什么我不能閉嘴。我花了兩周時(shí)間研究Python3,我需要發(fā)泄我的失望。在這些責(zé)罵中,仍然有有用的信息,因?yàn)樗涛覀內(nèi)绾蝸硖幚鞵ython3。如果沒有被我煩到,就讀一讀吧2014-11-11
Python使用pandas和xlsxwriter讀寫xlsx文件的方法示例
今天小編就為大家分享一篇關(guān)于Python使用pandas和xlsxwriter讀寫xlsx文件的方法示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
Pandas統(tǒng)計(jì)重復(fù)的列里面的值方法
今天小編就為大家分享一篇Pandas統(tǒng)計(jì)重復(fù)的列里面的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
使用tensorflow實(shí)現(xiàn)線性svm
這篇文章主要為大家詳細(xì)介紹了使用tensorflow實(shí)現(xiàn)線性svm的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
用Python將IP地址在整型和字符串之間輕松轉(zhuǎn)換
這篇文章主要給大家介紹了利用Python將IP在整型和字符串之間輕松轉(zhuǎn)換的相關(guān)資料,文中還跟大家分享了Python下利用正則表達(dá)式來匹配校驗(yàn)一個(gè)字符串是否為ip地址的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03
python讀取json文件并將數(shù)據(jù)插入到mongodb的方法
這篇文章主要介紹了python讀取json文件并將數(shù)據(jù)插入到mongodb的方法,實(shí)例分析了Python操作json及mongodb數(shù)據(jù)庫(kù)的技巧,需要的朋友可以參考下2015-03-03
Python中tkinter無法同時(shí)顯示多個(gè)image的解決方法及pack與place解析
這篇文章主要介紹了Python中tkinter無法同時(shí)顯示多個(gè)image的解決方法及pack與place解析,本文給大家分享問題原因解析及解決方案,需要的朋友可以參考下2023-02-02
tensorflow實(shí)現(xiàn)讀取模型中保存的值 tf.train.NewCheckpointReader
今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)讀取模型中保存的值 tf.train.NewCheckpointReader,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

