1. 程式人生 > >如何用python編寫一個繪製馬賽克影象的自寫程式mask = np.zeros

如何用python編寫一個繪製馬賽克影象的自寫程式mask = np.zeros

這篇教程將會展示如何用python的圖形化包“Pygame”和基礎的檔案I/O來建立一個自寫程式。這個程式將可以仿照給定的圖片來創作一幅馬賽克畫。Python是一種非常強大的程式語言。它有著許多的內建函式和可下載的軟體包。在這片教程的末尾,你將會擁有一副屬於你自己的蒙娜麗莎馬賽克畫並且將會學會如何對所有你喜歡的圖片進行處理。注意,本文是為那些對Python,Pygame和檔案I/O有著深刻理解的使用者準備的。 第一部分 下載圖片 1.下載《蒙娜麗莎》的圖片。這是建立你的馬賽克畫的基礎。注意這幅影象的尺寸(以畫素為單位)將對所要寫的程式碼有重要影響。 ·將它儲存為“mona.jpg” ·影象大小設定為743畫素 * 1155畫素。確保圖片是以這個尺寸儲存的,否則將不會得到正確地馬賽克圖片。 第二部分 建立主程式 1.開啟一個新的Python檔案。將其命名為“makeMona.py”(可自定義)。 2.匯入所需要的模組。這個程式需要Pygame模組來顯示圖片並且需要Math模組來執行你所新增的功能。 3.建立顯示圖片的部分。在開始處理影象以前,需要建立顯示視窗以使Mona Lisa影象能夠被載入並且顯示出來 ·display.set_mode((743,1155))是對於顯示尺寸的設定。(743,1155)代表顯示的尺寸;注意這要和影象的尺寸一致。 4為自寫程式建立一個目標檔案。在“makeMona”程式中,設定要寫入的新檔案。 ·變數mon是您對於馬賽克文件的引用。宣告中新檔案叫做“mona.py”。“w”代表將會對新檔案進行寫入的操作。 5初始化新程式。現在可以開始寫入“mona.py”檔案。在這裡你需要匯入新檔案所需的模組以及設定顯示圖片的尺寸。 ·mon.write表示現在正把下面的程式碼寫入到新檔案中。其中設定的顯示尺寸要和Mona Lisa影象的尺寸一致。
6在makeMona.py中顯示圖片。為了確認你的圖片已經正確地載入到你的程式中,你需要讓圖片顯示出來。 7.繪製馬賽克圖片。現在可以將圖片分解為小的色塊來建立馬賽克影象。為了得到最好的馬賽克效果而不至於使得影象變形,建議將五個畫素合併到一個色塊內。 ·mon.write("draw.rect(screen,"+c+",("+str(x)+","+str(y)+",4,4)) ")這是最重要的一行,分析如下: ·draw.rect(screen,"+c+", 用來描繪一個個馬賽克色塊(螢幕上顯示出來的一個個小矩形) 然後將顏色"c"關聯到螢幕的對應位置 str(screen.get_at((x,y)))。這是如何將顏色對映到每個畫素的過程。 ·("+str(x)+","+str(y)中的"x"和"y"代表色塊的座標。用str來轉換是由於程式需要按處理字串的方式來處理這些座標值(這是因為現在這些值是在三引號中,而所有引號中的值都是string格式) ·+",4,4)) ")中的4,4用來表示馬賽克華中每個色塊的尺寸,“”是換行符,用來是程式切換到新的一行來寫接下來的程式碼。 8.建立while-running迴圈。像所有的Pygame程式一樣,你必須在mona.py中寫入while-running迴圈。
第三部分 程式碼的檢查和測試 1.檢查程式碼。你的主程式makeMona.py現在已經完成了。以下是完整的程式碼。 2.開啟新生成的mona.py檔案。在你makeMona程式所儲存的目錄下,可以找到新生成的mona.py程式檔案。 ·如果你開啟這個檔案,你將會發現幾百行程式碼。這簡直就像魔法一般,每行程式碼都對應著馬賽克畫中的一個獨立色塊。 ·開啟這個檔案可能需要幾秒鐘的時間;因為它非常的大。 3.執行mona.py。如果之前的每一步都沒有問題,最後一步只需要執行mona.py來看下你的《蒙娜麗莎》馬賽克畫。 第四部分 常見問題 1 排除程式故障。在實現你自己的馬賽克程式碼中很容易犯一些小錯誤。以下是一些會遇到的常見問題以及解決方法。 ·新生成的程式檔案在哪?主程式執行完畢後,新程式檔案應當出現在主程式所在的目錄中。 ·新生成的程式不能執行。你為自寫程式所寫的所有程式碼都在三引號之中。檢查所有引號之中的程式碼,確保沒有丟掉冒號引號或者縮排方面的錯誤。 ·為什麼影象扭曲了?這可能是由於錯誤的顯示尺寸所造成的。確保display.set_mode中的顯示尺寸在整個程式碼中是相同的。http://www.wikihow.com/Make-a-Self%E2%80%90Writing-Mosaic-Program-in-Python