Похоже, QImage поддерживает несколько способов загрузки из пиксельных массивов.
QImage(const uchar *data, int width, int height, Format format)
bool QImage::loadFromData(const uchar *buf, int len, const char *format=0)
Используя первый пример, если у вас есть массивы, которые вы упомянули, то вы, вероятно, захотите использовать формат QImage :: Format_RGB888 (из qimage.h).
Вам нужно знать ширину и высоту самостоятельно.
Наконец, вы захотите упаковать ваши массивы в один массив uchar *
uchar* rgb_array = new uchar[19200+19200+19200];
for( int i = 0, j = 0; j < 19200; ++j )
{
// here we convert from the double range 0..1 to the integer range 0..255
rgb_array[i++] = r[j] * 255;
rgb_array[i++] = g[j] * 255;
rgb_array[i++] = b[j] * 255;
}
{
QImage my_image( rgb_array, width, height, QImage::Format_RGB888 );
// do stuff with my_image...
}
delete[] rgb_array; // note you need to hold onto this array while the image still exists