我有个问题问读一个bmp图像。我怎么可以像素数值(R、G、B值)在一个bmp的图像?任何人都可以帮助我,使用C++编程语言?

有帮助吗?

解决方案

简单的方法是要找到一个很好的图像处理图书馆为你选择的平台,并使用。

硬盘的方式将是开放的文件而实际上解释二进制数据内。要做到这一点,你会需要的 BMP文件说明书.我建议试图简单的方法的第一个。

其他提示

请注意:您可能需要获取额外的字节为阿尔法值,如果你的BMP有alpha通道。在这种情况下,图像会image[pixelcount][4],你将再增加getc(streamIn)行认为,第四指数。我BMP横空出世,并不需要这一点。

 // super-simplified BMP read algorithm to pull out RGB data
 // read image for coloring scheme
 int image[1024][3]; // first number here is 1024 pixels in my image, 3 is for RGB values
 FILE *streamIn;
 streamIn = fopen("./mybitmap.bmp", "r");
 if (streamIn == (FILE *)0){
   printf("File opening error ocurred. Exiting program.\n");
   exit(0);
 }

 int byte;
 int count = 0;
 for(i=0;i<54;i++) byte = getc(streamIn);  // strip out BMP header

 for(i=0;i<1024;i++){    // foreach pixel
    image[i][2] = getc(streamIn);  // use BMP 24bit with no alpha channel
    image[i][1] = getc(streamIn);  // BMP uses BGR but we want RGB, grab byte-by-byte
    image[i][0] = getc(streamIn);  // reverse-order array indexing fixes RGB issue...
    printf("pixel %d : [%d,%d,%d]\n",i+1,image[i][0],image[i][1],image[i][2]);
 }

 fclose(streamIn);

〜Locutus

你需要研究BMP文件的格式。它是更容易阅读压缩的24位BMP文件。他们只是包含一个标题在开始和RGB值的每一像素。

开始有了这个,检查实例的2x2图像在 http://en.wikipedia.org/wiki/BMP_file_format.按照下面的步骤。

  1. 创建2x2BMP图像显示在维基百科上。
  2. 打开文件,在二元模式,用你的C节目。
  3. 寻求字节的位置54个。
  4. 读3字节。

字节数将是0,0和255分别。(不确定是否便是RGB。我已经做到了这一长回来和我想的了不是RGB。只是验证这一点。)

就这么简单!研究的头骨要了解更多关于格式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top