生活随笔
收集整理的這篇文章主要介紹了
python模拟ps中的素描工具
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實就是將原圖放入。然后你用工具將圖像P一下,轉換為素描圖像。很像濾鏡之類的PS。
話不多說
簡單實現一下
# -*- encoding: utf-8 -*-# 圖像處理
# 導如科學計算庫
import numpy as np
# 導入畫圖庫
from PIL import Image# 封裝一個工具類
class TestNumpy(object):# 定義方法 傳一個圖片地址def photo2paint(self, img_url):# 讀圖。矩陣化。轉到內存 my_photo = np.asarray(Image.open(img_url).convert('L')).astype('float') # 像素化conventprint(f'查看有沒有讀取出來:{my_photo.shape}')print(f'查看圖片矩陣大小:{my_photo.size}')# 設置灰度閾(yu)值 范圍是(0-100是固定值)預估一下depth = 13# 將灰度系數映射到numpygrad = np.gradient(my_photo)# 獲取坐標 分別返回倆個值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/Auni_y = grad_y/Auni_z = 1/A# 灰度光源設置# 基本寫固定寫法vec_el = np.pi/2.2 # 光源角度vec_az = np.pi/4 # 弧度值# 設置x軸和y軸dx = np.cos(vec_el) * np.cos(vec_az)dy = np.cos(vec_el) * np.sin(vec_az)#設置z軸dz = np.sin(vec_el)# 設置貝塔值b = 255 * (dx*uni_x + dy*uni_y + dz*uni_z)# 光源歸一化b = b.clip(0,255)# 聲明圖像類對象im = Image.fromarray(b.astype('uint8'))# 保存圖像,生成新圖像im.save('./timg_new.jpg')if __name__ == "__main__":# 實例化對象testnumpy = TestNumpy()# 載入要處理的圖像testnumpy.photo2paint('test.jpg')
總結
以上是生活随笔為你收集整理的python模拟ps中的素描工具的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。