python第四次實驗(大作業)


學號 20202116 《Python程序設計》實驗報告

課程:《Python程序設計》
班級: 2021
姓名: 李鴻略
學號:20202116
實驗教師:王志強
實驗日期:2021年6月13日
必修/選修: 公選課

1.實驗內容

Python綜合實踐,從小到大喜歡畫(但是不會畫),特別喜歡看別人畫畫,也特別喜歡看別人用一些廢棄的物品組成一幅好看的畫。既然廢品都能畫畫,那我覺得利用字母畫畫也是可行的,恰巧在網上看到有許多dalao有相關的教程,其中內容也包含了較多python的知識點,不妨用來完成我的期末大作業。


 2. 實驗過程及結果

原理十分簡單:

將彩圖導入程序—>將彩圖轉換成灰圖—>灰圖轉換成字符

首先導入PIL庫用於處理圖片

 

 

 

然后定義類 save 來讀寫文本(后面用)

Getchars用於利用字符串來替換灰度

當然,飯要一口一口吃,在彩圖情況下,每一個像素點返回的是一個tuple ,里面是它的RGB值。但是無論我們使用R、G還是B都不能很好表示該點的顏色深度,所以,我們要先把他轉換為灰色圖  函數:img = img.convert('L') 

 

 

 

換了之后圖是這樣子的

 

 

灰圖在函數getpixel中返回顏色深度,我們可以利用字符占黑比(就是字符有多黑)比較,在不同深淺的地方采取不同的字符替換

因為圖片像素點太多了,我們要先重置圖片大小,把像素減少再進行比較

 

效果圖:

 

 

 

是不是很像?(bushi)原因在於可利用的字符只有八種,實在太少。因此我們要增多字符的個數,當然range也要變

 

 

 

 

 算你有只貓樣

我們可以增加圖像的像素,讓他看起來更像他自己

 

 


 3. 實驗過程中遇到的問題和解決過程
- 問題1:一開始不知道彩圖在函數getpixeGB 返回的是RGB元組,元組不能和整形數比較

- 問題1解決方案:所以要把彩圖轉化為灰圖
- 問題2:Traceback (most recent call last):

  File "C:\Users\Hungloek\Desktop\python\picturechange.py", line 60, in <module>

    line += get_chars(pi)

  File "C:\Users\Hungloek\Desktop\python\picturechange.py", line 19, in get_chars

    return chars[15 - k]

IndexError: list index out of range
- 問題2解決方案:這里是創造更多的字符,讓顏色區別度更大,但是忘記調整range的范圍,導致了list index out of range,所以我們要根據字符數來調整range。

感悟:python幫助我打開了編程的新的大門。它擁有許許多多強大的第三方庫,使我可以輕輕松松使用原來我可能一兩年都編不出來的函數,使我在解決實際問題時更加輕松。本學期,我們學習了python輸入輸出 條件與循環、序列、字符串、函數、面向對象、數據庫、socket、爬蟲等等內容。與c語言相比,python更加人性化。這次大作業因為我實現沒有學習PIL,因此處理起來還是相當麻煩,等之后有機會,准備嘗試着先利用爬蟲爬取如何實現字符串畫畫的大量資料,聚集起來學習透徹之后,再去實現編程。最后,感謝王志強老師帶領我走入python的世界,希望以后能和老師一起繼續探討更多有關計算機的知識!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM