計算機入門課Stanford CS101-week2

For-loop (Javascript里沒有這個函數(shù)):

對圖像中所有的點逐一進行操作,這里body lines are indented to show difference with other lines.

image = new SimpleImage ("flowers.jpg")

for(pixel:image){

? ? ?pixel.setRed(0);

? ? ?pixel.setBlue(0);

}

print(image)


Image Expressions

主要是講了一個pixel.getRed()函數(shù),這個函數(shù)可以直接獲取圖像中每一個pixel的rgb值,之后我們可以對它獲得的值進行乘法運算。這樣當我們想要對以后圖像的顏色進行調(diào)試時,可以不用具體的rgb值,只要嘗試相對的倍數(shù)就可以。

不過這個函數(shù)也是對圖像上所有的pixel來進行操作的。

image=new SimpleImage("flowers.jpg")

for(pixel:image){

? ? pixel.setGreen(pixel.getGreen() * 0.75)

}

print(image)


當然,可以把pixel.getGreen()賦給一個變量,然后再setGreen里直接用變量名。

image=new SimpleImage("flowers.jpg")

for(pixel:image){

old=pixel.getGreen()

pixel.setGreen(old* 0.75)

}

print(image)


Image Puzzel

這個section主要是講了一種調(diào)試顏色的思路。一張色調(diào)在黑-紅之間的金門大橋的照片,被一片藍綠色“雪花遮蓋”。這個圖像其實是所有pixel的r值被除了一個很大的值,導(dǎo)致pixel之間雖然r值的相互關(guān)系可以構(gòu)成一個圖像但暗度太低所以看不清,形成了一個黑色的畫布,上面的b/g值可以隨意設(shè)定顯現(xiàn)出任意,藍綠色圖像。

修復(fù)的方法就是把b/g值設(shè)成0,然后把所有pixel的r值等比增大就行。


Grayscale Images

當一個顏色r/g/b三個值相等的時候,它就處于灰色色譜上,不偏向于紅綠藍任何一種顏色。

怎么把彩色的圖片轉(zhuǎn)化成灰色的呢?如何衡量圖片上某個顏色的亮度呢?---答案是取r/g/b三個值的平均值。

image = new SimpleImage("flowers.jpg");

for (pixel: image) {

avg=[pixel.getRed()+pixel.getGreen()+pixel.getBlue()]/3

pixel.setRed(avg)

pixel.setGreen(avg)

pixel.setBlue(avg)

}

print(image);

其中求平均值的步驟必須放在for loop里面,因為每個pixel的明亮度不同,需要進行逐一計算。


提醒:經(jīng)過試驗,setGreen,getGreen函數(shù)后面必須要立馬跟上括號,但for和SimpleImage就沒有關(guān)系,不用立馬跟上。

Ps,第二課的作業(yè)試顏色真的是,沒有最好只有更好,每次我覺得已經(jīng)不錯了submit后還是不對,最后還是靠排列組合找出的最佳答案,囧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容