作者dhon (小东)
看板Visual_Basic
标题Re: [VB6 ] 关於取得点的灰度(像素)值
时间Mon Dec 25 17:02:12 2006
: 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
1F:推 geniusgod:感谢回文 我大概懂您的意思 12/25 23:32