python實(shí)現(xiàn)圖片彩色轉(zhuǎn)化為素描
更新時(shí)間:2019年01月15日 11:25:35 作者:zh_250
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片彩色轉(zhuǎn)化為素描,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了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
# 圖像組成:紅綠藍(lán) (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
# 色差擴(kuò)散器
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)
如果報(bào)錯(cuò)

可以直接安裝
命令pip install Pillow即可
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
海王小姐姐悄悄問(wèn)我怎么在PC端登錄多個(gè)微信
這篇文章主要介紹了怎么在PC端登錄多個(gè)微信號(hào),眾所周知pc端一般只能登陸一個(gè)微信號(hào),可這年頭誰(shuí)還只有一個(gè)號(hào),又不能同時(shí)用兩臺(tái)電腦,這篇文章帶給你答案2021-08-08
Python實(shí)現(xiàn)獲取前100組勾股數(shù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取前100組勾股數(shù)的方法,涉及Python數(shù)值計(jì)算與判斷相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
Python調(diào)用微信公眾平臺(tái)接口操作示例
這篇文章主要介紹了Python調(diào)用微信公眾平臺(tái)接口操作,結(jié)合具體實(shí)例形式分析了Python針對(duì)微信接口數(shù)據(jù)傳輸?shù)南嚓P(guān)操作技巧,需要的朋友可以參考下2017-07-07
Python+OpenCV手勢(shì)檢測(cè)與識(shí)別Mediapipe基礎(chǔ)篇
網(wǎng)上搜到了一些關(guān)于手勢(shì)處理的實(shí)驗(yàn),我在這兒簡(jiǎn)單的實(shí)現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于Python+OpenCV手勢(shì)檢測(cè)與識(shí)別Mediapipe基礎(chǔ)篇的相關(guān)資料,需要的朋友可以參考下2022-12-12

