本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
導(dǎo)語(yǔ)
本來想用神經(jīng)網(wǎng)絡(luò)讓計(jì)算機(jī)學(xué)會(huì)畫鉛筆畫和素描的,后來發(fā)現(xiàn)其實(shí)不用神經(jīng)網(wǎng)絡(luò)效果也還可以,那么系列上就從簡(jiǎn)單的入手!
先放圖哈!
沙畫:
鉛筆畫:
文件下載
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1Y4ocZhhJuuRdWAJjWTh3MQ
密碼: 26xi
原理簡(jiǎn)介
素描:
sketch1.py:
其主要思想是彩色圖片先轉(zhuǎn)換成灰度圖片,然后模擬人作畫時(shí)先畫輪廓再逐步勾畫細(xì)節(jié)的過程。
勾輪廓時(shí)比較像素點(diǎn)左邊一小段區(qū)域內(nèi)像素平均值和右邊一小段區(qū)域內(nèi)像素平均值的差值,如果差值超過預(yù)設(shè)范圍,則認(rèn)為該點(diǎn)是輪廓點(diǎn)。另外,素描時(shí)不是一次性成像的,而是由淡到深,依次畫,這樣可以使圖畫看起來深淺更分明,更有立體感。
sketch2.py:
原理類似,但是以線條為單位進(jìn)行素描,并且增加了隨機(jī)函數(shù),使得線條長(zhǎng)度不確定,并且增加到上下、左右、左上、右下、右上、左下8個(gè)方位區(qū)塊的比較,這樣創(chuàng)作的素描畫看上去更柔和,也更接近真實(shí)的人類作畫的風(fēng)格。
沙畫:
sand_paint.py:
其實(shí)原理和畫鉛筆畫是差不多的,區(qū)別是用隨機(jī)函數(shù)模擬了空白背景上的沙粒,沙粒的顏色深淺,可以通過S_COLOR_LIGHT和S_COLOR_DARK來設(shè)置。
OK,代碼原理介紹完畢,其實(shí)很簡(jiǎn)單或者說很low。但效果確實(shí)還不錯(cuò)。
運(yùn)行方式
python設(shè)置了環(huán)境變量之后,在cmd中運(yùn)行即可。輸入python文件名+想要素描或者化成沙畫的原圖像路徑(含圖像名)即可。例如下圖:
圖片將保存在當(dāng)前路徑下。
下期預(yù)告
讓python模仿世界名畫!也就是之前很火的一個(gè)人工智能話題。
比如梵高筆下的天安門和上海: