python實現(xiàn)圖片彩色轉(zhuǎn)化為素描
更新時間:2019年01月15日 11:25:35 作者:zh_250
這篇文章主要為大家詳細介紹了python實現(xiàn)圖片彩色轉(zhuǎn)化為素描,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Python將圖片彩色轉(zhuǎn)化為素描的具體代碼,供大家參考,具體內(nèi)容如下
第一種:
from PIL import Image, ImageFilter, ImageOps
img = Image.open('E:\\picture\\1.png')
def dodge(a, b, alpha):
return min(int(a*255/(256-b*alpha)), 255)
def draw(img, blur=25, alpha=1.0):
img1 = img.convert('L') #圖片轉(zhuǎn)換成灰色
img2 = img1.copy()
img2 = ImageOps.invert(img2)
for i in range(blur): #模糊度
img2 = img2.filter(ImageFilter.BLUR)
width, height = img1.size
for x in range(width):
for y in range(height):
a = img1.getpixel((x, y))
b = img2.getpixel((x, y))
img1.putpixel((x, y), dodge(a, b, alpha))
img1.show()
img1.save('E:\\picture\\10.png')
draw(img)
第二種:
from PIL import Image
import os
# 圖像組成:紅綠藍 (RGB)三原色組成 亮度(255,255,255)
image = "E:\\picture\\123.png"
img = Image.open(image)
img_all = "E:\\picture\\1234.png"
new = Image.new("L", img.size, 255)
width, height = img.size
img = img.convert("L")
# print(img.size)
# print(img.mode) #RBG
#
# img_get = img.getpixel((0, 0))
# print(img_get) #三原色通道
#
# img_L=img.convert('L')
# print(img_L)
# img_get_L=img_L.getpixel((0,0)) #換算 得到灰度值
# print(img_get_L)
# 定義畫筆的大小
Pen_size = 3
# 色差擴散器
Color_Diff = 6
for i in range(Pen_size + 1, width - Pen_size - 1):
for j in range(Pen_size + 1, height - Pen_size - 1):
# 原始的顏色
originalColor = 255
lcolor = sum([img.getpixel((i - r, j)) for r in range(Pen_size)]) // Pen_size
rcolor = sum([img.getpixel((i + r, j)) for r in range(Pen_size)]) // Pen_size
# 通道----顏料
if abs(lcolor - rcolor) > Color_Diff:
originalColor -= (255 - img.getpixel((i, j))) // 4
new.putpixel((i, j), originalColor)
ucolor = sum([img.getpixel((i, j - r)) for r in range(Pen_size)]) // Pen_size
dcolor = sum([img.getpixel((i, j + r)) for r in range(Pen_size)]) // Pen_size
# 通道----顏料
if abs(ucolor - dcolor) > Color_Diff:
originalColor -= (255 - img.getpixel((i, j))) // 4
new.putpixel((i, j), originalColor)
acolor = sum([img.getpixel((i - r, j - r)) for r in range(Pen_size)]) // Pen_size
bcolor = sum([img.getpixel((i + r, j + r)) for r in range(Pen_size)]) // Pen_size
# 通道----顏料
if abs(acolor - bcolor) > Color_Diff:
originalColor -= (255 - img.getpixel((i, j))) // 4
new.putpixel((i, j), originalColor)
qcolor = sum([img.getpixel((i + r, j - r)) for r in range(Pen_size)]) // Pen_size
wcolor = sum([img.getpixel((i - r, j + r)) for r in range(Pen_size)]) // Pen_size
# 通道----顏料
if abs(qcolor - wcolor) > Color_Diff:
originalColor -= (255 - img.getpixel((i, j))) // 4
new.putpixel((i, j), originalColor)
new.save(img_all)
i = os.system('mshta vbscript createobject("sapi.spvoice").speak("%s")(window.close)' % '您的圖片轉(zhuǎn)換好了')
os.system(img_all)
如果報錯

可以直接安裝
命令pip install Pillow即可
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中Tkinter Scrollbar滾動條(窗口滑動條)
本文主要介紹了Python中Tkinter Scrollbar滾動條(窗口滑動條),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
Pytorch中的Tensorboard與Transforms搭配使用
這篇文章主要介紹了Pytorch中的Tensorboard與Transforms搭配使用,主要是結(jié)合了前兩篇文章的的一個小練習,感興趣的小伙伴可以來練習一下,希望對你的學習有所幫助2021-12-12

