python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...
這次的教學(xué)非常簡單,只需要安裝了python模式的processing就可以(安裝教程見專欄目錄)。我從網(wǎng)上找了一個比100*100稍微大一點的圖片,你可以也找一個。然后我們就可以一起開始今天的學(xué)習(xí)啦~(請先閱讀本專欄中的processing入門教程部分)
本專欄中的processing入門教程部分關(guān)于圖片:圖片請找一個類似大小的,然后放在processing工程的文件夾中。打開某個processing工程文件夾的快捷方法是這樣的:先新建一個空白processing文件并保存,然后在速寫本中就能找到“打開程序目錄”了。
打開程序目錄processing讀取并展示圖片
def上面就是一個完整的小程序啦。
操作圖片的像素向量
def這里用到的圖片相關(guān)的內(nèi)置函數(shù)有點多,但是不難理解。我們逐個講解:
img.pixels 是存儲圖片像素的列表,每個像素用一個color常量表示。
img.loadPixels() : 用于產(chǎn)生img.pixels。執(zhí)行了這一句之后,img.pixels 才能被正常訪問。
img.updatePixels():讓processing根據(jù)我們對img.pixels的更改,來更改對應(yīng)的圖片。注意讓list的大小在更改后保持和原先一致。
而color(0, 0, 0)中的三個值分別代表了RGB的一個值,并返回一個顏色常量。
在這個程序里,我們把像素矩陣中的前1000個點涂黑,效果如下:
遮擋上邊部分向量和矩陣來回轉(zhuǎn)化
可能在上一部分中,當(dāng)我說到“像素向量”的時候,有一部分機(jī)智的同學(xué)就會有疑問了:“像素不應(yīng)該是組成一個矩陣,也就是列表的列表嗎?”。我們先看一下官方文檔中對于img.pixels的描述:
img.pixels然后再結(jié)合上個程序的效果,我們大膽猜測,這個向量代表的意思是把圖片中的矩陣一行行的拼接成一個向量。我們可以寫一個程序驗證一下:
def請自己運行觀看效果,這里只提供一個截圖:
動態(tài)遮擋從這個動畫可以看出,img.array究竟是以怎樣的方式表示一個圖片的。其中用到了變色的小技巧,不熟悉的同學(xué)可以把顏色用color(0, 0, 0)代替。
那么我們到這里就把像素向量怎么和圖片像素的對應(yīng)關(guān)系給搞清楚了。現(xiàn)在我們就寫一個函數(shù)來做圖片像素向量和普通矩陣(列表的列表)之間的轉(zhuǎn)換。
def這就是我寫出的函數(shù)。整個函數(shù)非常的pythonic。感興趣的同學(xué)可以自己測試一下這兩個函數(shù),下面我們直接使用這兩個函數(shù)做進(jìn)一步的編程。
程序:遮擋住圖片的左邊部分
def 遮擋左邊部分讓圖片動起來
有了上個章節(jié)中的兩個向量矩陣轉(zhuǎn)換函數(shù),我們就可以做更加更加復(fù)雜的操作了。比如說,讓圖片進(jìn)行循環(huán)滾動:
# 把上個程序中的draw()函數(shù)替換成這個通過調(diào)用python列表的pop()和insert()方法,我們就實現(xiàn)了讓圖片滾動起來。列表是不是很強大呢?(請自行運行觀看效果)
讓蘋果快速滾動飛起來
好了,我們不僅要讓蘋果循環(huán)滾動起來,還要讓蘋果滾得快到飛起。(蘋果:“我太難了”)
# 把上個程序中的draw()函數(shù)替換成這個這個程序的原理就是,當(dāng)一個物體快速移動的時候,人眼是能夠自動“補充畫面幀數(shù)”的,所以我們不再一個一個像素的滾動,而是每次直接把n列像素從一邊拿下來接到另一邊。(通過在setup()中設(shè)置frameRate()能夠控制程序更新速度)
快速滾動的蘋果https://www.zhihu.com/video/1175124935423574016思考題
如何實現(xiàn)快速的讓蘋果移出畫面呢?你有沒有其他更有意思的主意呢?
恰飯時間
強烈推薦《python基礎(chǔ)教程》,點贊加關(guān)注專欄,可以獲得作者認(rèn)真標(biāo)注而且手動加詳細(xì)目錄的pdf電子版文件。
總結(jié)
以上是生活随笔為你收集整理的python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搞懂HMM
- 下一篇: Web框架——Flask系列之宏、继承、