2014年10月22日 星期三

01360095 資工三甲 俞憶婕 HW02


圖片色彩分布折線圖

程式完成圖
*圖片只支援副檔名.bmp



這次作業是要畫出照片的色彩分布,
程式的剛開始,當然是要先能載入圖片,
這部分老師在上課就講過了,
使用OpenPictureDialog元件就可以做到了。


然後就進入正題了,先計算出每個像素中顏色的分配,
利用"Histogram"按鈕觸發程式。

先利用"bPtrImageRow"載入圖片的Bitmap,
在宣告三個陣列B[],G[],R[]
用迴圈去計算每個Byte裡的RGB數值。



最困難的就是在畫圖的部分了,
剛開始沒想太多,直接用陣列裡的數字去畫,
結果發現數字太大了,會整個超過我原本畫的格子。



後來又想說那就把它除與某個數字吧
於是就寫成了這個樣子:Image3->Canvas->LineTo(k+1,105-(B[k]/100));
波形變得很小,而且如果圖片如果在更大的畫,還是會爆掉。



所以後來就想到那就用百分比去寫吧
先用一個迴圈去算出RGB的最大值,
B[k]/bMax*100去算出他的百分比
畫出了很奇怪的圖形,
使用ListBox去列出所有數字才發現,
因為"B[k]/bMax"計算時變成了0.XX,
而因為宣告時是使用Int型別,所以小數點後的數字會不見,
即使後來又"*100",但零成一百還是零,
所以只會出現100%的線。


調整後,寫成了B[k]*100/bMax
才終於成為跟Photoshop分析的結果相同的圖




程式碼
https://www.dropbox.com/s/l1i79r5xu21pj1s/Unit1.cpp?dl=0

沒有留言:

張貼留言