最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程利用Numpy和PIL庫將圖片轉(zhuǎn)化為手繪

 更新時(shí)間:2021年09月26日 16:44:48   作者:Dragon少年  
這篇文章主要介紹了Python編程利用Numpy和PIL庫將一張圖片轉(zhuǎn)化為手繪風(fēng)格,文中附含詳細(xì)實(shí)現(xiàn)的示例代碼,有需要的朋友可以借鑒參考下

主要采用的技術(shù)點(diǎn)

Python + Numpy + PIL

在正文代碼開始前,大家先看看最初原圖和轉(zhuǎn)換手繪風(fēng)圖片前后對(duì)比。

在這里插入圖片描述

當(dāng)然了,我先查了手繪的三個(gè)基本特點(diǎn):

  • 圖片可單通道灰度圖
  • 邊緣線條較重可當(dāng)成黑色,相同或相近像素值趨向白色
  • 光源效果下,灰度變化類似于人類視覺的遠(yuǎn)近

下面開始介紹,手繪照實(shí)現(xiàn)步驟:

讀取圖片,轉(zhuǎn)化為數(shù)組

因?yàn)橐獙?duì)圖像的像素計(jì)算,可以先把圖片先轉(zhuǎn)化為數(shù)組。代碼如下:

depth = 10.  # (0-100)
grad = np.gradient(a)  # 取圖像灰度的梯度值
grad_x, grad_y = grad  # 分別取橫縱圖像梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.

計(jì)算 x,y,z 軸梯度值,歸一化

照片對(duì)邊緣區(qū)域更側(cè)重,計(jì)算梯度是定位圖片邊緣部分最有效方式,用灰度變化來模擬圖片遠(yuǎn)近效果,depth 表示預(yù)設(shè)深度,z 軸默認(rèn)梯度為 1。

depth = 10.  # (0-100)
grad = np.gradient(a)  # 取圖像灰度的梯度值
grad_x, grad_y = grad  # 分別取橫縱圖像梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.

對(duì)梯度值進(jìn)行歸一化操作

A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)
uni_x = grad_x / A
uni_y = grad_y / A
uni_z = 1. / A

加入光源效果

根據(jù)光源不同的入射角度,對(duì)x,y,z 各軸上的梯度值有不同程度的影響,添加一個(gè)模擬光源,放置在斜上方,與 x , y 分別形成兩個(gè)夾角,最后用正弦余弦函數(shù)計(jì)算出新的像素值。

vec_el = np.pi / 2.2  # 光源的俯視角度,弧度值
vec_az = np.pi / 4.  # 光源的方位角度,弧度值
dx = np.cos(vec_el) * np.cos(vec_az)  # 光源對(duì) x軸的影響
dy = np.cos(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)  # 光源歸一化,8 255
b = b.clip(0, 255)# 對(duì)像素值低于0,高于255部分做截?cái)嗵幚?

導(dǎo)出圖片,并保存

im.save("man_shouhui.jpg")

用 Python將一張圖片轉(zhuǎn)化為手繪風(fēng)格,就這么輕松搞定了!

以上就是Python編程利用Numpy和PIL庫將一張圖片轉(zhuǎn)化為手繪風(fēng)格的詳細(xì)內(nèi)容,更多關(guān)于python編程N(yùn)umpy和PIL庫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

新余市| 阳新县| 新巴尔虎右旗| 澄城县| 朝阳市| 巴南区| 南部县| 台北市| 鞍山市| 阿拉善右旗| 荔波县| 高碑店市| 平阴县| 稻城县| 南平市| 晋中市| 萨迦县| 宜都市| 台北市| 利津县| 宜兰县| 嘉善县| 两当县| 吴江市| 神农架林区| 五大连池市| 呼图壁县| 丹棱县| 边坝县| 象山县| 汝城县| 清镇市| 建水县| 屯门区| 额尔古纳市| 简阳市| 梁河县| 息烽县| 武宣县| 肥东县| 怀仁县|