[問題] 關於陣列中元素計算

看板C_and_CPP (C/C++)作者 (west)時間13年前 (2012/10/19 16:08), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/1
開發平台(Platform): VC++ 額外使用到的函數庫(Library Used): none 問題(Question): 這個code是網路上看到的,他可以讀24位元的BMP進來 將色彩資訊讀成一維陣列,然後在143行那裡將RGB從陣列中讀出 我想要對RGB做其他的演算法 可是他R.G.B都是char格式,這樣有辦法運算嗎?? 還是要把它轉換成int,如果是請問要怎麼轉?? 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/QI6qh 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.10.169

10/19 16:14, , 1F
RGB總共24bits,三個unsigned char夠存了,運算的時候
10/19 16:14, 1F

10/19 16:15, , 2F
不要和其它型別的數字混在一起就好
10/19 16:15, 2F

10/19 16:15, , 3F
(不要戰我char不一定是8bits oQ)
10/19 16:15, 3F

10/19 16:16, , 4F
unsighed char 存是對的,但這份 code 問題反而在別處..
10/19 16:16, 4F

10/19 16:18, , 5F
它沒處理每個 raw 要對齊 4 之倍數的問題.其它小節就略過.
10/19 16:18, 5F

10/19 16:39, , 6F
那假如我R要乘以一個數字例如3.不能R*3??
10/19 16:39, 6F

10/19 16:45, , 7F
可以轉成浮點數。
10/19 16:45, 7F

10/19 16:46, , 8F
以 8 bit per channel 的 pixel format 來說,
10/19 16:46, 8F

10/19 16:47, , 9F
每個 channel 的範圍是 0 ~ 255 。轉成浮點數以後,
10/19 16:47, 9F

10/19 16:48, , 10F
範圍落在 0.0 ~ 1.0。運算完以後把超出範圍的 clamp 掉,
10/19 16:48, 10F

10/19 16:49, , 11F
再轉成 0 ~ 255 的整數。
10/19 16:49, 11F

10/20 11:09, , 12F
就算R是UCHAR, R*3時不會自動promotion嗎?_?
10/20 11:09, 12F
文章代碼(AID): #1GWGfkgu (C_and_CPP)
文章代碼(AID): #1GWGfkgu (C_and_CPP)