看板 C_and_CPP 關於我們 聯絡資訊
小弟是Visual C++的新手 最近再練習用Visual C++寫影像處理 練習到灰階處理時有個小疑問想詢問 一般灰階處理最簡單的公式為 Y=(R+G+B)/3 Y範圍介於0~255,當我得到Y值時,分別存入二為陣列 想回填像素然後顯示出圖片來,使用Color類別裡面的SetPixel(i,j,Color值) 想請問Color值要怎要設定為0~255呢,有查過MSDN可以使用FromArgb設定Color 但像素值為Int32位元當然可以個別指定R G B像素FromArgb(r,g,b), 因為目前取出Y值後剩八位元,也沒所謂的RGB各別值,所以想詢問該怎樣去設定Color值 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.223.45
stupid0319:我猜是FromArgb(YY,YY,YY) 11/29 22:47
purpose:我印象中,沒看過有人用 (R+G+B)/3 ... 11/29 22:51
holydc:HSI space 的 intensity 就是 (R + G + B) / 3 啦 11/29 23:00
kiedveian:(R+G+B)/3 應該是練習用的,通常是要乘上相關係數吧 11/29 23:01
LPH66:那是 YUV 的 Y 值.... HSI 的 I 值的確是加起來除以 3 11/29 23:08
purpose:喔,大多用RGB,沒注意到HSI 11/29 23:08
purpose:你用公式算出要給灰階設的值後,假設是128,再用SetPixel 11/29 23:14
purpose:把r,g,b都填128,但是存檔的部份,GDI要怎麼轉還要查一下 11/29 23:15
lovexyz520:謝謝各位大大的回答,剛剛測試,SUT大跟PUR大講的可以 11/29 23:16
purpose:目前只看到 GDI+ 的 Bitmap::ConvertFormat 似乎是? 11/29 23:16
lovexyz520:也確實三個直都給Y就行了,謝謝 11/29 23:16