[問題] Visual C++ 灰階

看板C_and_CPP作者 (xyz)時間15年前 (2010/11/29 22:44), 編輯推噓5(506)
留言11則, 6人參與, 最新討論串1/1
小弟是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

11/29 22:47, , 1F
我猜是FromArgb(YY,YY,YY)
11/29 22:47, 1F

11/29 22:51, , 2F
我印象中,沒看過有人用 (R+G+B)/3 ...
11/29 22:51, 2F

11/29 23:00, , 3F
HSI space 的 intensity 就是 (R + G + B) / 3 啦
11/29 23:00, 3F

11/29 23:01, , 4F
(R+G+B)/3 應該是練習用的,通常是要乘上相關係數吧
11/29 23:01, 4F

11/29 23:08, , 5F
那是 YUV 的 Y 值.... HSI 的 I 值的確是加起來除以 3
11/29 23:08, 5F

11/29 23:08, , 6F
喔,大多用RGB,沒注意到HSI
11/29 23:08, 6F

11/29 23:14, , 7F
你用公式算出要給灰階設的值後,假設是128,再用SetPixel
11/29 23:14, 7F

11/29 23:15, , 8F
把r,g,b都填128,但是存檔的部份,GDI要怎麼轉還要查一下
11/29 23:15, 8F

11/29 23:16, , 9F
謝謝各位大大的回答,剛剛測試,SUT大跟PUR大講的可以
11/29 23:16, 9F

11/29 23:16, , 10F
目前只看到 GDI+ 的 Bitmap::ConvertFormat 似乎是?
11/29 23:16, 10F

11/29 23:16, , 11F
也確實三個直都給Y就行了,謝謝
11/29 23:16, 11F
文章代碼(AID): #1CyxndQh (C_and_CPP)