получить значения пикселей RGB из uint8 c ++ - PullRequest
1 голос
/ 28 ноября 2011

Я создаю функцию c #, которая перемещает изображение BitmapFrame в байт [] (используя 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) ????

1 Ответ

1 голос
/ 28 ноября 2011

Предполагая, что данные вашего изображения имеют такой макет

  • Пиксели - это строки развертки на линии сканирования, слева направо
  • Один пиксель упакован как RGB или, в конечном итоге, RGBA
  • Вы используете pixelSize байт на пиксель (может быть 3, может быть 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
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...