从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)????
答
假设您的图片数据有这样
- 像素的布局是按扫描线扫描线,从左到右
- 一个像素被打包为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
你在使用什么库? –
没有图书馆。我试图写我自己的=)如果你问关于C++ dll - 这也是我的代码。我试图连接这三个实体--RGB +像素(具有RGB)+像素缓冲区 – curiousity
是代表整个像素的单个“uint8”,还是红色,绿色和蓝色组件都是'uint8'? –