App下載

python學(xué)畫(huà)畫(huà)(上)

猿友 2018-08-07 18:04:49 瀏覽數(shù) (11226)
反饋

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專(zhuān)欄

下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解

導(dǎo)語(yǔ)

本來(lái)想用神經(jīng)網(wǎng)絡(luò)讓計(jì)算機(jī)學(xué)會(huì)畫(huà)鉛筆畫(huà)和素描的,后來(lái)發(fā)現(xiàn)其實(shí)不用神經(jīng)網(wǎng)絡(luò)效果也還可以,那么系列上就從簡(jiǎn)單的入手!

先放圖哈!

沙畫(huà):

鉛筆畫(huà):


文件下載

百度網(wǎng)盤(pán)下載鏈接: https://pan.baidu.com/s/1Y4ocZhhJuuRdWAJjWTh3MQ

密碼: 26xi


原理簡(jiǎn)介

素描:

sketch1.py:

其主要思想是彩色圖片先轉(zhuǎn)換成灰度圖片,然后模擬人作畫(huà)時(shí)先畫(huà)輪廓再逐步勾畫(huà)細(xì)節(jié)的過(guò)程。

勾輪廓時(shí)比較像素點(diǎn)左邊一小段區(qū)域內(nèi)像素平均值和右邊一小段區(qū)域內(nèi)像素平均值的差值,如果差值超過(guò)預(yù)設(shè)范圍,則認(rèn)為該點(diǎn)是輪廓點(diǎn)。另外,素描時(shí)不是一次性成像的,而是由淡到深,依次畫(huà),這樣可以使圖畫(huà)看起來(lái)深淺更分明,更有立體感。

sketch2.py:

原理類(lèi)似,但是以線(xiàn)條為單位進(jìn)行素描,并且增加了隨機(jī)函數(shù),使得線(xiàn)條長(zhǎng)度不確定,并且增加到上下、左右、左上、右下、右上、左下8個(gè)方位區(qū)塊的比較,這樣創(chuàng)作的素描畫(huà)看上去更柔和,也更接近真實(shí)的人類(lèi)作畫(huà)的風(fēng)格。

沙畫(huà):

sand_paint.py:

其實(shí)原理和畫(huà)鉛筆畫(huà)是差不多的,區(qū)別是用隨機(jī)函數(shù)模擬了空白背景上的沙粒,沙粒的顏色深淺,可以通過(guò)S_COLOR_LIGHT和S_COLOR_DARK來(lái)設(shè)置。

OK,代碼原理介紹完畢,其實(shí)很簡(jiǎn)單或者說(shuō)很low。但效果確實(shí)還不錯(cuò)。


運(yùn)行方式

python設(shè)置了環(huán)境變量之后,在cmd中運(yùn)行即可。輸入python文件名+想要素描或者化成沙畫(huà)的原圖像路徑(含圖像名)即可。例如下圖:

圖片將保存在當(dāng)前路徑下。


下期預(yù)告

讓python模仿世界名畫(huà)!也就是之前很火的一個(gè)人工智能話(huà)題。

比如梵高筆下的天安門(mén)和上海:

0 人點(diǎn)贊