locked
WM上用directshow取到的数据做灰度化处理 RRS feed

  • 问题

  • 我从摄像头取到了RGB565的16位的位图用如下程序做了灰度处理后生成的bmp图,为什么是1半的并且是绿色的呢?


        for ( h = 0; h < height; h++) {

          for ( w = 0; w < width; w++) {

                pixel = *dataAddress;

                dataAddress++;
                pixelR = (u8_t)((pixel&0xF800)>>11);//5 bits
                pixelG = (u8_t)((pixel&0x07E0)>>5);//6 bits
                pixelB = (u8_t)(pixel&0x001F);//5 bits
      pixel256 = (u8_t)((pixelR * 299 + pixelG * 587 + pixelB * 114) / 1000);

      *(img256 + h*width + w) = pixel256;
          }
        }

    生成的图片下半部分是绿色的图,上半部分有时是全黑的,有时是和下半部分一样绿色图。
    2010年1月31日 11:57

答案



  • 主要是需要把directshow得到的RGB565 16位的图像转换成24位图再转换成8位图就可以了。
    2010年2月1日 12:13