Re: [VB6 ] 關於取得點的灰度(像素)值

看板Visual_Basic作者 (小東)時間18年前 (2006/12/25 16:54), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
: C(I, J) = GetPixel(hdc1, I, J) 我直接挑這行重點來說就好了 GetPixs = GetPixel(PicIN.hDC, PixWidth, PixHeight) '讀取圖片中某點暫存至變數中 beRed = (GetPixs And &HFF) '轉化成灰階的 R 值 beGreen = (GetPixs \ &H100) And &HFF '轉化成灰階的 G 值 beBlue = (GetPixs \ &H10000) And &HFF '轉化成灰階的 B 值 y = CInt(0.299 * beRed + 0.588 * beGreen + 0.114 * beBlue) '得出真正的灰階值(Y) 而至於你說為什麼會有 16777215 呢 那是因為 256*256*256 - 1 也就是它的 rgb 應該都是 FF,FF,FF 無論你的來源是灰階,256色,24bit,不管多少 基本上以目前大部份的人的顯示器顏色都有24bit或32bit 所以出來的值最大就會是 0~16777215 (r*g*b) 懂了嗎??? 但與甚如此,從畫面得出色值效率不見得最快,最好 最快的,反而是直接分析來源圖檔的 binary code 而且可以避免因為來源色階與顯示免階的不同 而產生了運算的誤差 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.177.76

12/25 23:32, , 1F
感謝回文 我大概懂您的意思
12/25 23:32, 1F
文章代碼(AID): #15Zv7MSj (Visual_Basic)
文章代碼(AID): #15Zv7MSj (Visual_Basic)