欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年09月26日 16:44:48   作者:Dragon少年  
這篇文章主要介紹了Python編程利用Numpy和PIL庫(kù)將一張圖片轉(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)成黑色,相同或相近像素值趨向白色
  • 光源效果下,灰度變化類似于人類視覺(jué)的遠(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ì)算梯度是定位圖片邊緣部分最有效方式,用灰度變化來(lái)模擬圖片遠(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庫(kù)將一張圖片轉(zhuǎn)化為手繪風(fēng)格的詳細(xì)內(nèi)容,更多關(guān)于python編程N(yùn)umpy和PIL庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中不能連接超時(shí)的問(wèn)題及解決方法

    python中不能連接超時(shí)的問(wèn)題及解決方法

    這篇文章主要介紹了python中不能連接超時(shí)的問(wèn)題及解決方法,需要的朋友可以參考下
    2018-06-06
  • Python中Yield的基本用法

    Python中Yield的基本用法

    這篇文章主要給大家介紹了關(guān)于Python中Yield的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • PyOD進(jìn)行異常值檢測(cè)使用實(shí)例

    PyOD進(jìn)行異常值檢測(cè)使用實(shí)例

    異常值檢測(cè)各個(gè)領(lǐng)域的關(guān)鍵任務(wù)之一,PyOD是Python Outlier Detection的縮寫,可以簡(jiǎn)化多變量數(shù)據(jù)集中識(shí)別異常值的過(guò)程,在本文中,我們將介紹PyOD包,并通過(guò)實(shí)際給出詳細(xì)的代碼示例
    2024-02-02
  • Pandas實(shí)現(xiàn)Excel文件讀取,增刪,打開,保存操作

    Pandas實(shí)現(xiàn)Excel文件讀取,增刪,打開,保存操作

    Pandas?是一種基于?NumPy?的開源數(shù)據(jù)分析工具,用于處理和分析大量數(shù)據(jù)。本文將通過(guò)Pandas實(shí)現(xiàn)對(duì)Excel文件進(jìn)行讀取、增刪、打開、保存等操作,需要的可以參考一下
    2023-04-04
  • Python實(shí)現(xiàn).gif圖片拆分為.png圖片的簡(jiǎn)單示例

    Python實(shí)現(xiàn).gif圖片拆分為.png圖片的簡(jiǎn)單示例

    有時(shí)候需要把GIF圖片分解成一張一張的靜態(tài)圖,jpg或者png格式,下面這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn).gif圖片拆分為.png圖片的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • python中numpy?常用操作總結(jié)

    python中numpy?常用操作總結(jié)

    這篇文章主要介紹了python中numpy常用操作總結(jié),NumPy是Python語(yǔ)言的一個(gè)擴(kuò)充程序庫(kù),支持大量高維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)
    2022-09-09
  • Python轉(zhuǎn)換時(shí)間的圖文方法

    Python轉(zhuǎn)換時(shí)間的圖文方法

    在本篇文章里小編給大家整理的是關(guān)于Python轉(zhuǎn)換時(shí)間的方法以及具體步驟流程,需要的朋友們參考下。
    2019-07-07
  • 學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫(kù)并執(zhí)行查詢操作

    學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫(kù)并執(zhí)行查詢操作

    這篇文章主要介紹了學(xué)習(xí)python之編寫簡(jiǎn)單簡(jiǎn)單連接數(shù)據(jù)庫(kù)并執(zhí)行查詢操作,需要的朋友可以參考下
    2016-02-02
  • Python使用Selenium時(shí)遇到網(wǎng)頁(yè)<body>劃不動(dòng)的問(wèn)題解決方法

    Python使用Selenium時(shí)遇到網(wǎng)頁(yè)<body>劃不動(dòng)的問(wèn)題解決方法

    如果在使用 Selenium 時(shí)遇到網(wǎng)頁(yè)的 <body> 劃不動(dòng)的問(wèn)題,這通常是因?yàn)轫?yè)面的滾動(dòng)機(jī)制(例如,可能使用了一個(gè)具有固定高度的容器或自定義的滾動(dòng)條)導(dǎo)致無(wú)法通過(guò)簡(jiǎn)單的 JavaScript 實(shí)現(xiàn)滾動(dòng),可以通過(guò)以下方法來(lái)解決該問(wèn)題
    2024-10-10
  • python運(yùn)行環(huán)境在新舊電腦間遷移的三種方法

    python運(yùn)行環(huán)境在新舊電腦間遷移的三種方法

    環(huán)境部署或遷移是一項(xiàng)簡(jiǎn)單而又考驗(yàn)應(yīng)對(duì)能力的一項(xiàng)工作,這篇文章主要給大家介紹了關(guān)于python運(yùn)行環(huán)境在新舊電腦間遷移的三種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08

最新評(píng)論