背景介紹
資源參考於:
Python數據分析與展示【北理工 嵩天】第一週實例
順便一提:
中國大學慕課,有的課程過期了不讓訪問。
這個課是我之前就報名參加的,所以現在可以直接訪問,有意思的是:好像別人點擊我的鏈接也是能訪問的。
當然,慕課上的“過期”課程網上有很多方法能訪問,這裏不做深入討論。
慕課上的教程挺詳細的,故這裏不作知識介紹了。
直接上完整代碼
下面的代碼與其說是我寫的,倒不如說是我整理的~
看在整理的還不錯的份上,發個“原創”不過分吧?
from PIL import Image
import numpy as np
def Change_Image1(im):#對圖片進行“高光”處理
a=np.array(im)
b=[255,255,255]-a #計算補值
im=Image.fromarray(b.astype('uint8')) #還原爲原圖像類型
im.save("Change_image1.jpg") #保存到當前目錄下(絕對路徑)
def Change_Image2(im):#灰度變換(像照片底片)
#彩色圖片生成灰度圖片,生成的是一個二維數組
a=np.array(im.convert('L'))
b=255-a #對灰度值取反
im=Image.fromarray(b.astype('uint8'))
im.save("Change_image2.jpg")
def Change_Image3(im):#顏色比較淡的灰度圖片
a=np.array(im.convert('L'))
b=(100/255)*a + 150 #區間變換
im=Image.fromarray(b.astype('uint8'))
im.save("Change_image3.jpg")
def Change_Image4(im):#顏色比較暗的灰度圖片
a=np.array(im.convert('L'))
b=255*(a/255)**2 #像素平方
im=Image.fromarray(b.astype('uint8'))
im.save("Change_image4.jpg")
def Change_Image5(im):#將圖片轉爲手繪效果
a = np.asarray(im.convert('L')).astype('float')
#根據灰度變化來模擬人類視覺的明暗程度
depth = 10.0 #預設深度值爲10,範圍(0-100)
grad = np.gradient(a) #提取圖像灰度的梯度值
grad_x, grad_y = grad #提取x和y方向的梯度值
grad_x = grad_x*depth/100.0
grad_y = grad_y*depth/100.0 #對x,y進行歸一化
#根據灰度變化來模擬人類視覺的遠景程度
A = np.sqrt(grad_x**2 + grad_y**2 + 1.0)
uni_x = grad_x/A #圖像平面的單位法向量
uni_y = grad_y/A
uni_z = 1.0/A
vec_el = np.pi/2.2 #光源的俯視角度,弧度值
vec_az = np.pi/4.0 #光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) #光線在地面上的投影長度
dy = np.cos(vec_el)*np.sin(vec_az)
dz = np.sin(vec_el)
b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) #梯度轉換回灰度
b = b.clip(0,255) #將灰度值裁剪到[0,255],避免數組越界
im = Image.fromarray(b.astype('uint8')) #還原爲原圖像類型
im.save('Change_image5.jpg') #保存到當前文件夾下
if __name__=='__main__':
#在當前目錄下獲取圖片 "Latern.jpg"(打開圖片是公共操作,可在主函數重實現)
im=Image.open( "Image_test.jpg")
Change_Image1(im) #對圖片進行“高亮”處理(高飽和讀,高對比度)
Change_Image2(im) #將圖片轉爲類照片底片色
Change_Image3(im) #將圖片轉爲淡灰色
Change_Image4(im) #將圖片轉爲暗灰色
Change_Image5(im) #將圖片轉爲手繪效果
BY THE WAY
如果想直接輸出圖片:
im.show()
效果欣賞
涉及到圖片的代碼其實挺有意思的,而且博客也好寫,放幾張圖片內容就多了
原圖
截的壁紙一部分,沒想到還挺大
子函數1:“高光”處理
更酷炫了有沒有?
子函數2:“黑白高飽和”
有的ACGN文化中有的人眼轄了,靠“意念”感知周圍世界似乎就是這個感覺
子函數3:顏色比較暗淡的灰度
孤獨,滄桑
子函數4:灰度值比較暗的圖片
悽慘、悲涼
子函數5:手繪效果
emmmmm,可能是選圖的原因,效果馬馬虎虎吧。
感覺和QQ上編輯“手繪”效果差不多
我似乎之前也寫過關於Python處理圖片的博客?
還真有
額,其實很多時候我自己都不願意看自己的BLOGS😂
【Python】採用opencv庫的cv2.imread()方法讀圖片及其他嘗試(os.listdir()、cvc2.rezise() )