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

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

 更新時間: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)圖片前后對比。

在這里插入圖片描述

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

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

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

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

因?yàn)橐獙D像的像素計(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 軸梯度值,歸一化

照片對邊緣區(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.

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

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)  # 光源歸一化,8 255
b = b.clip(0, 255)# 對像素值低于0,高于255部分做截斷處理

導(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庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

黄龙县| 五家渠市| 开化县| 长泰县| 边坝县| 扎赉特旗| 定襄县| 朝阳区| 武清区| 宁夏| 博野县| 东乡族自治县| 泰顺县| 阜平县| 察隅县| 芷江| 敦煌市| 登封市| 和田市| 通江县| 武川县| 鄯善县| 收藏| 搜索| 息烽县| 巴彦淖尔市| 敦化市| 平南县| 江孜县| 荆门市| 连平县| 开封县| 黑龙江省| 桂林市| 淳安县| 吴堡县| 侯马市| 安顺市| 东海县| 剑河县| 涟水县|