熬了一夜!我用Python做了一個網站,幫小姐姐生成漫畫頭像

公衆號關注 “菜鳥學Python

設爲 “星標”,每天看趣味Python乾貨!

對於動漫,大家一定都不陌生,小編周圍的不少單身碼農都是動漫迷。小編也是一個資深動漫迷,動漫裏面有好多漂亮的小姐姐,比如鬥破蒼穹的美杜莎,雲韻,蕭薰兒,天行九歌裏面紫女,焰靈姬。當然女孩也有自己的動漫情懷,部門裏面還有小姐姐喜歡cosplay呢~~

於是乎我想既然Python無所不能,不如用Python做一個小程序幫小姐姐的頭像轉成漫畫,以後也可以搭訕一下部門的小姐姐,吹噓一把!哈哈,想想都幸福,於是熬了一夜,總於完成了這個小程序。

 1 

圖片和漫畫的區別

首先,我們來看一下,漫畫和我們的照片的區別,如下圖所示:

從上面的圖中,我們可以看出,相比於圖片,漫畫更注重輪廓的細節,邊界輪廓比較清晰,其次就是漫畫的色彩數量比真實的圖片要少,所以看起來對於細節信息漫畫不如圖片更加真實。

 2 

圖片轉漫畫——減少色彩

圖片轉漫畫——減少色彩

有了上述的兩個細節的描述,我們接下來的程序,也將圍繞着這兩點進行展開。

  • 先要需要減少色彩的數量,我們利用的是oepncv庫實現。我們首先利用金字塔下采樣降低圖片的分辨率,提高原圖片的模糊程度;

  • 然後再利用雙邊濾波來不斷的對圖片進行濾波操作,進一步提高圖片的模糊程度,這就達到了我們模糊的目的。

  • 使用金字塔而不是插值來減少圖片分辨率的目的是爲了達到模糊的目的,因爲金字塔下采樣會產生失真;

  • 用雙邊濾波能很好的保存邊緣信息,對於我們上面提到的強化邊緣很友好。

下圖是程序減少色彩數量時,圖像分辨率的變化過程:

其對應的程序入下圖所示:

上述程序中,我們需要注意的一點就是對於輸入的圖片我們必須要調整圖片尺寸爲4的整數倍,因爲在金字塔下采樣的過程中,圖片會默認降到原先尺寸的1/4大小,如果無法除盡的話,程序會自動向上取整,這樣的話,我們上採樣之後,模糊的圖片和最初輸入的圖片在分辨率上會有些許的差別,這樣會使後面的程序保存。

 3 

圖片轉漫畫——增強輪廓

完成了上面幾步之後,我們接着要進行增強輪廓了。我們的程序如下圖所示:

上述的程序中,我們利用opencv的自適應閾值函數來分割輪廓,然後將我們的輪廓圖片和模糊後的圖片按照輪廓圖片的數值進行與操作,最終得到我們的漫畫圖片。

以上便是程序的核心部分,接下來我們用Python裏面的著名框架flask程序做一個簡單額網站頁面。

Flask做一個簡單的網站

對於flask程序,想必大家或多或少都有一定的瞭解,我們所使用的flask程序非常簡單,我簡單的說一下思路和步驟:

  • 首先我們運行程序會出現下圖中最上部的界面;

  • 然後我們選擇圖片點擊上傳後,html頁面會跳轉到/cartoon的子頁面下,同時運行後臺的cartoon函數,入中間圖所示;

  • 此時也就完成了圖片的轉換,並給html頁面返回轉換成漫畫的圖片地址;

  • html頁面只需要找到這個圖片,顯示在頁面上即可,如下圖中最下部的圖所示。

熬了一夜,實在是太累了,原創不易,上面的網站雖然已經完成,但是頁面非常簡陋需要進一步的美化!本篇只是給大家拋磚引玉,Python裏面趣味的庫非常多,可以做很多有趣的事情。

最後給看一下視頻效果

話不多說,現在已經是凌晨了,小編好睏好睏啊,實在挺不住了要去睡覺啦!原創不易,一個文案從開始的設計,打磨,寫源碼,錄視頻,排版覈對,需要大量的時間和精力,有的時候改錯別字都要反覆覈對好幾遍,希望大家捧場支持

今天時間倉促,回頭小編會優化代碼,增加功能,然後錄製視頻一步一步講解如何創作的,源碼和視頻會放在B站上,大家敬請期待,睡覺去咯 ~~

近期十大熱門:

由菜鳥學Python原班人馬打造的公衆號【程序員GitHub】,專注於分享GitHub上有趣的資源包括,Python,Java,Go語言前端學習等優質的學習資源,爆料程序員圈的新鮮趣事,熱門乾貨,職場感悟,感興趣的小夥伴可以來捧場!



點的“在看”,否則就看不到我了555
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章