// Packed struct for pixel storage typedef struct __attribute__((packed)) RGB_24Bit { uint8_t red; uint8_t green; uint8_t blue; } RGB_24Bit_t; // Number of pixels in the image constexpr uint32_t IMAGE_SIZE = 1920 * 1080; constexpr uint8_t PIXEL_SIZE_BYTES = 3; // local variables uint8_t* baseAddr = reinterpret_cast(MEM_BASE_ADDR); static RGB_24Bit_t pixel = { 0 }; static uint32_t red = 0; static uint32_t green = 0; static uint32_t blue = 0; // Iterate over image by pixel size in bytes for (size_t p = 0; p < IMAGE_SIZE * PIXEL_SIZE_BYTES; p += sizeof(RGB_24Bit_t)) { // Get addr RGB_24Bit_t* pixelAddr = reinterpret_cast(baseAddr + p); // Dereference to get pixel data pixel = *pixelAddr; // Sum Pixel values red += pixel.red; green += pixel.green; blue += pixel.blue; } // Gather average by considering total pixels red /= IMAGE_SIZE; green /= IMAGE_SIZE; blue /= IMAGE_SIZE; // Display average xil_printf("%d", iter); xil_printf("\r\n Red: %d", red); xil_printf("\r\n Blue: %d", blue); xil_printf("\r\n Green: %d", green); // Reset values red = 0; blue = 0; green = 0; break;