看到有关帖子说求所有象素点的灰度值的平均。
1。灰度值和一个彩色点的颜色值有什么公式转换吗?
2。遍历图像上每一个点,用什么方法会快一点?

解决方案 »

  1.   

    1,灰度颜色:
    Private Type color
        Red As Long
        Green As Long
        Blue As Long
    End TypeFunction GrayScaleColor(color) As Long
        Dim ColorValues As color
        ColorValues = RGBValues(color)
        With ColorValues
            GrayScaleColor = (9798 * .Red + 19235 * .Green + 3735 * .Blue) \ 32768
            .Red = GrayScaleColor
            .Green = GrayScaleColor
            .Blue = GrayScaleColor
            GrayScaleColor = RGB(.Red, .Green, .Blue)
        End With
    End Function2,可以用API把图片装进内存,再进行计算,这样快。具体代码你可以再网上找些图像方面的代码,一般都有。
      

  2.   

    1。灰度值和一个彩色点的颜色值有什么公式转换吗?
     一个是你上面的公式
     或者(r+g+b)/3也有这么用的
    2。遍历图像上每一个点,用什么方法会快一点?
     映射到数组里操作
      

  3.   

    映射到数组?是否用getpix读每一个象素点到数组,然后转换?这样会更快吗?
      

  4.   

    有没有可行的快速方法?
    ======================
    api:
    GetBitmapBits之类。
      

  5.   

    或者
    CreateDIBSection但一定不要用getpixel!
      

  6.   

    快速获取像素的值,可以用DIB方法,参考http://blog.csdn.net/wallescai/
    关于阀值的选取,也有专门的算法,你可以参考一下BLOG内关于"木雕"的算法
      

  7.   

    里面的例子执行不了。为什么我找不到关于dib的一些说明啊?哪里有
      

  8.   

    谁能给个关于dib的资料,函数说明?给了就揭帖了
      

  9.   

    http://www.aivisoft.net/Zyl910/zDIBop.zip自己看看里面的类,或者直接用就ok了。
      

  10.   

    这里是详细的解释:
    http://dev.csdn.net/develop/article/20/20442.shtm
      

  11.   

    第一个链接错了,是http://www.aivisoft.net/zyl910/ZylDIBop.zip