简易的素描图片转换流程与实现
前言
之前經(jīng)常在網(wǎng)上看到用PS實(shí)現(xiàn)真實(shí)圖片到素描圖片的轉(zhuǎn)換,但是流程都大同小異,身為一只程序猿,必須來(lái)個(gè)一鍵轉(zhuǎn)化額。
國(guó)際慣例,參考博客:
Photoshop基礎(chǔ)教程:混合模式原理篇
顏色減淡的原理講解以及應(yīng)用
ps是如何通過(guò)最小值獲得描邊效果的?
圖紙轉(zhuǎn)線稿背后的計(jì)算機(jī)繪圖原理
步驟與實(shí)現(xiàn)
網(wǎng)上的流程大都分為四個(gè)步驟:
那么python實(shí)現(xiàn)也很方便:
第一步:讀圖片,轉(zhuǎn)灰度圖
img = cv2.imread('./images/zly1.jpg') # 去掉飽和度 img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)第二步:反向,圖像就變成了底片色
# 反相 img_inv = 255.0 - img_gray第三步:高斯模糊或者最小值濾鏡
# 高斯模糊 # img_filt = cv2.GaussianBlur(img_inv, ksize=(3, 3),sigmaX=0, sigmaY=0) # 最小值濾鏡 img_filt = np.zeros_like(img_inv,dtype=np.uint8) radius = 3; for i in range(radius,img_inv.shape[0]-radius):for j in range(radius,img_inv.shape[1]-radius):img_filt[i,j] = np.min(img_inv[i-radius:i+radius,j-radius:j+radius])關(guān)于高斯模糊或者最小值濾鏡的原理,可以看上面的參考博客,實(shí)測(cè)發(fā)現(xiàn)最小值濾鏡效果或更好。
第四步:顏色減淡
# color dodge A = img_gray.astype('float32') B = img_filt.astype('float32') img_dodge = A+(A*B)/(255.0-B)原理在第一篇參考博客,其實(shí)就是一個(gè)公式,用于混合兩組圖像。
可視化
plt.figure(figsize=(8,8)) plt.subplot(121) plt.imshow(img/255.0) plt.axis('off') plt.subplot(122) plt.imshow(img_dodge/255.0,cmap='gray') plt.axis('off')我穎美如畫(huà)…
有興趣可以自行去按照流程在PS中操作一遍,可以達(dá)到一樣的效果。
后記
記錄一下這個(gè)好玩的流程,代碼公布在微信公眾號(hào)簡(jiǎn)介的github中,有興趣或者疑問(wèn)歡迎關(guān)注公眾號(hào),私信討論問(wèn)題,持續(xù)更新骨骼動(dòng)畫(huà)、機(jī)器學(xué)習(xí)、圖像相關(guān)有趣實(shí)用的知識(shí)點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的简易的素描图片转换流程与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Web APIs简介
- 下一篇: sshpass用法介绍