У меня есть следующий код, который получает все данные изображения RGB и сохраняет их в переменной ptrInImage:
ptrInImage = ptrProcUnit->GetMeasureImage(0);
, а затем я использую этот код для получения значений RGB для каждого пикселя:
for (int i = 0; i < sizeY; i++) {
BYTE *rs, *gs, *bs, *rd, *gd, *bd;
rs = (BYTE *)ptrInImage + sizeof(IMAGE) + sizeX * i;
gs = rs + sizeX * sizeY;
bs = gs + sizeX * sizeY;
rd = (BYTE *)ptrOutImage + sizeof(IMAGE) + sizeX * i;
gd = rd + sizeX * sizeY;
bd = gd + sizeX * sizeY;
for (int j = 0; j < sizeX; j++) {
//input can be processed here.. in this case it is simply copied to the output image pixel by pixel..
*rd = *rs;
*gd = *gs;
*bd = *bs;
rs++; gs++; bs++;
rd++; gd++; bd++;
}
}
Это медленно ... особенно, если у вас есть несколько изображений с разрешением 5 или более мегапикселей. Я могу ускорить обработку изображений, используя интегральные изображения, но чтобы получить целостное изображение, мне все равно нужно сканировать пиксель за пикселем. Но мне было интересно, может быть, есть более быстрый способ сделать это. Учитывая, что мне нужно обрабатывать сотни изображений, каждое ускорение, даже на несколько миллисекунд, является хорошим результатом.