c++ - 从 uint8 c++ 获取 RGB 像素值

标签 c++ image-processing

我创建了一个 c# 函数,将 BitmapFrame 图片移动到 byte[](使用 copypixels)。然后我将这个缓冲区粘贴到 c++ dll 中,它是 uint8*。 cpp中有结构

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

是否可以为这个 uint8* 缓冲区组织一个循环来逐个像素地获取(例如 x y - 图像的高度和宽度(我也有这个数据))? 类似

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,如果是 alpha channel 则可能是 4)

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
  }
}

关于c++ - 从 uint8 c++ 获取 RGB 像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297029/

相关文章:

python - 检查图像是否包含蓝色像素

python - 填充图像中空的封闭部分

image-processing - 如何将通过http post接收到的png图像加载为OpenCV IplImage格式

c++ - 在 OpenCV 中访问 c​​vMat 图像中的像素值

c++ - 如何在保留符号链接(symbolic link)的同时在多阶段 Docker 构建的各个阶段之间复制库文件?

c++ - 替换 getchar 的返回值

C++ 内联模板策略函数

c++ - 你能在堆上声明一个指针吗?

c++ - 为什么给对象赋值的时候会调用构造函数和析构函数

python - numpy 中的图像混合返回纯白色图像