作者tyc5116 (累人啊....)
看板C_and_CPP
標題[問題] RGB彩色轉灰階
時間Tue Nov 6 14:00:27 2012
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c++ builder 6
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
mil Lib (類似opencv的影像lib)
問題(Question):
彩色轉灰階異常
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/vNZw5k
結果圖片如下,左邊是image1 右邊是image2
http://dropcanvas.com/nyrl5/1 圖B
http://dropcanvas.com/nyrl5/2 圖A
image1是直接讀取現成的圖片,image2是透過mil截取image1資料放入buffer
再將buffer匯出成一張bmp,再將圖放入TImageBox(image2內)顯示出來
參考這個網頁的寫法
http://sean1223.blogspot.tw/2010/01/bcb-pixel-rgb.html
再對照程式碼
image1和image2的寫法是一樣的
1.采用網頁的方法一,結果如圖A
2.采用網頁的方法二和三,結果如圖B
請問會造成這樣的結果是為什麼呢?
謝謝
※ 編輯: tyc5116 來自: 220.134.238.4 (11/06 14:27)
→ EdisonX:你的 b,g,r 是 int ?? 11/06 14:42
→ tyc5116:是的,但會覺得會造成這樣異常,type應該問題不大 11/06 14:51
推 Bencrie:pixel format 32bits 結果第一個方法是乘 3 ? 11/06 15:07
→ tyc5116:bit的部份我就不是很清楚了,不過image1的結果看起來是對的 11/06 15:19
→ tyc5116:抱歉,這陣子在自學,還有很多不清楚的地方 11/06 15:19
推 Bencrie:你可以試著把方法一改成 *4 看看結果如何 @@ 11/06 15:22
→ tyc5116:可以了耶,謝謝,上wiki看了一下,但有一句不懂 11/06 15:29
→ tyc5116:"餘下的8bit不分配到象素中"->那又為何要變*4 ? 11/06 15:29
→ peefly:他的意思是某些情況下沒用到、不用於顯示吧 11/06 15:40
→ tyc5116:好的,謝謝推文的各位 11/06 15:41