Re: [VB6 ] 關於取得點的灰度(像素)值
: 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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 2 之 3 篇):
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章