从uint8获取RGB像素值C++

问题描述:

我创建了一个将BitmapFrame图片移动到byte [](使用copypixels)的c#函数。然后我将这个缓冲区粘贴到C++ dll中,它是uint8 *。有一个在CPP从uint8获取RGB像素值C++

typedef struct 
{ 
    float r; 
    float g; 
    float b; 
} pixel; 

的结构是否有可能组织一个循环这个UINT8 *缓冲区得到逐像素(例如,通过XY - 高度和图像的宽度(这个数据我有太多)) ? 像

for(i=0; i< height;i++) 
{ 
for(j=0; j <width;j++) 
{ 
    SomeWorkWithPixelsfromUint8(i,j) //??? 
} 
} 

其中SomeWorkWithPixelsfromUint8(I,J)可以操作RGB结构

这么简单UINT8 - > getPixel(X,Y)????

+0

你在使用什么库? –

+0

没有图书馆。我试图写我自己的=)如果你问关于C++ dll - 这也是我的代码。我试图连接这三个实体--RGB +像素(具有RGB)+像素缓冲区 – curiousity

+0

是代表整个像素的单个“uint8”,还是红色,绿色和蓝色组件都是'uint8'? –

假设您的图片数据有这样

  • 像素的布局是按扫描线扫描线,从左到右
  • 一个像素被打包为RGB,或最终RGBA
  • 您使用pixelSize每像素字节(可能是3,可能是4,如果你alpha通道)

uint8_t* picData = ...; 

uint8_t* pixel = picData; 
for(int i = 0; i < height; ++i) { 
    for(int j = 0; j < width; ++j, pixel += pixelSize) { 
     float r = pixel[0]; 
     float g = pixel[1]; 
     float b = pixel[2]; 
     // Do something with r, g, b 
    } 
} 

+0

yesss。像我需要的字符串=) – curiousity